Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 使用循环在HBase中创建多个列限定符_Loops_Hadoop_Mapreduce_Hive_Hbase - Fatal编程技术网

Loops 使用循环在HBase中创建多个列限定符

Loops 使用循环在HBase中创建多个列限定符,loops,hadoop,mapreduce,hive,hbase,Loops,Hadoop,Mapreduce,Hive,Hbase,我想将行数据转换为列 我有州和访问数据,如下所示: State Visit Month AZ 1023 06 NY 32234 06 OH 9821 06 NY 4564 07 KS 3232 06 MO 2322 06 AZ 222 07 我希望我的数据如下所示: Month AZ KS MO NY OH 06 1

我想将行数据转换为列

我有州和访问数据,如下所示:

State    Visit   Month
AZ       1023    06
NY       32234   06
OH       9821    06
NY       4564    07
KS       3232    06
MO       2322    06
AZ       222     07
我希望我的数据如下所示:

Month    AZ    KS    MO    NY     OH
06       1023  3232  2322  32234  9821
07       222               4564
我的数据存储在HBase中

在我看来,我可以按状态过滤数据,然后将新列附加到新表中。 我可以用Pig中的少量列来实现这一点,但我认为这样做50次是愚蠢的,我宁愿使用循环。显然,这些都是同一列族中的列限定符

我知道猪没有环。我一直在努力寻找解决蜂巢问题的方法,但到目前为止运气不佳


在Pig、Hive、Native Mapreduce或HBase Shell中是否有这样做的方法?

在Hive中有这样做的方法。您可以收集对地图的访问次数和月份,然后在创建新列时引用地图的键。您将需要来自的CollectUDAF

查询:

输出:


我很感激你的回答,但我尽量避免具体地给每个州命名。我希望脚本完全自动化,而不必显式地命名每一列。我以州为例,但我的真实数据将有数千列,因此我无法实现此解决方案。
ADD jar /path/to/jar/brickhouse.jar;
CREATE TEMPORARY FUNCTION collect AS 'brickhouse.udf.collect.CollectUDAF';

SELECT month
    ,state_map['AZ'] AS AZ
    ,state_map['NY'] AS NY
    ,state_map['OH'] AS OH
    ,state_map['KS'] AS KS
    ,state_map['MO'] AS MO
FROM (
    SELECT month
        ,collect(state, visit) AS state_map
    FROM database.table
    GROUP BY month
    ) x
06    1023    32234    9821    3232    2322
07    222     4564     NULL    NULL    NULL