使用 Pig 将数据移动到 HBASE
Moving data to HBASE using Pig
我尝试在我的 hbase 中移动 851 个数据,为此我使用以下命令创建了 hbase
create 'customers', 'customers_data'
我使用 pig 脚本移动文件。我的猪脚本是
STOCK_A = LOAD '/user/cloudera/xxx' USING PigStorage('|');
data = FILTER STOCK_A BY ( [=11=] matches '.*MH.*');
MH_DATA = FOREACH data GENERATE , , ;
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记录和第三个参数。我不知道我做错了什么。
请帮助
我认为您错过了在生成语句中提供别名(为了安全起见,我已将您的元组转换为字符数组)
最后还要为您的存储关系命名
尝试:
MH_DATA = FOREACH data GENERATE (chararray) AS firstname , (chararray) AS lastname, (chararray) 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');
如需更多信息,请关注此 link:
https://pig.apache.org/docs/r0.14.0/api/org/apache/pig/backend/hadoop/hbase/HBaseStorage.html
在我将 行键 从名称更改为时间戳时进行了大量研究和跟踪和错误后,我解决了我的问题,因为我正在使用具有的行键与其他人同名,它总是更新它。
我尝试在我的 hbase 中移动 851 个数据,为此我使用以下命令创建了 hbase
create 'customers', 'customers_data'
我使用 pig 脚本移动文件。我的猪脚本是
STOCK_A = LOAD '/user/cloudera/xxx' USING PigStorage('|');
data = FILTER STOCK_A BY ( [=11=] matches '.*MH.*');
MH_DATA = FOREACH data GENERATE , , ;
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记录和第三个参数。我不知道我做错了什么。 请帮助
我认为您错过了在生成语句中提供别名(为了安全起见,我已将您的元组转换为字符数组)
最后还要为您的存储关系命名
尝试:
MH_DATA = FOREACH data GENERATE (chararray) AS firstname , (chararray) AS lastname, (chararray) 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');
如需更多信息,请关注此 link: https://pig.apache.org/docs/r0.14.0/api/org/apache/pig/backend/hadoop/hbase/HBaseStorage.html
在我将 行键 从名称更改为时间戳时进行了大量研究和跟踪和错误后,我解决了我的问题,因为我正在使用具有的行键与其他人同名,它总是更新它。