使用pig将数据移动到hbase

bpsygsoo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(305)

我尝试在我的hbase中移动851个数据,我使用下面的命令创建了hbase

create 'customers', 'customers_data'

我用pig脚本移动了文件。我的Pig剧本是

STOCK_A = LOAD '/user/cloudera/xxx' USING PigStorage('|');
data = FILTER STOCK_A BY ( $0 matches '.*MH.*');
MH_DATA = FOREACH data GENERATE $1, $3, $4;
STORE MH_DATA into 'hbase://customers' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('customers_data:firstname, customers_data:lastname, customers_data:age');

我用pig命令得到了851个数据。我的数据是

(aman,george,22)
    (aman,george,22)
    (aman,george,22)
     .
     .
     .
     .
     .
    851

但是当我尝试使用下面的命令将此数据放入hbase时

PIG_CLASSPATH=/usr/lib/hbase/hbase.jar:/usr/lib/zookeeper/zookeeper-3.4.5-cdh4.4.0.jar /usr/bin/pig /home/cloudera/remot/pighl7

存储在hbase中的数据是

ROW                                         COLUMN+CELL                                                                                                                 
 \xB5~\x5C&                                 column=customers_data:firstname, timestamp=1478700582076, value=george
 \xB5~\x5C&                                 column=customers_data:lastname, timestamp=1478700582076, value=22

我找不到我的851记录以及第三个参数。我不知道我做错了什么。请帮忙

mxg2im7a

mxg2im7a1#

在做了大量的研究和跟踪和错误后,当我将行键从名称改为时间戳时,我解决了我的问题,因为我使用的是与其他行键同名的行键,它总是更新它。

whlutmcx

whlutmcx2#

我认为您没有在generate语句中给出alias(为了更安全起见,我将元组转换为chararray)
也在最后给你的名字商店关系
尝试:

MH_DATA = FOREACH data GENERATE (chararray)$1 AS firstname , (chararray)$3 AS lastname, (chararray)$4 AS age;

STORE_IN_HBASE = STORE MH_DATA into 'hbase://customers' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('customers_data:firstname, customers_data:lastname, customers_data:age');

有关更多信息,请访问以下链接:https://pig.apache.org/docs/r0.14.0/api/org/apache/pig/backend/hadoop/hbase/hbasestorage.html

相关问题