如果我使用hbase shell
并发出:
put 'test', 'rowkey1','cf:foo', 'bar'
scan 'test'
我会将结果看作字符串,而不是字节。
如果我使用happybase
并发出:
import happybase
connection = happybase.Connection('<hostname>')
table = connection.table('test')
table.put('rowkey2', {'cf:foo': 'bar'})
for row in table.scan():
print row
我会将结果看作字符串,而不是字节。
我在hive中有数据,我通过以下方式运行聚合并存储在HDFS上:
INSERT OVERWRITE DIRECTORY 'aggregation_test'
SELECT device_id, device_name, sum(device_cost)
FROM devices
GROUP BY device_id, device_name
ORDER BY device_id, device_name
但是,如果我在Pig中发出以下内容:
A = LOAD 'aggregation_test' USING PigStorage(',') as (device_id:chararray, device_name:chararray, device_sum:int);
STORE A INTO 'hbase://aggregation_test'
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'cf:device_name, cf:device_sum');
hbase shell
和happybase
中的扫描结果是字节,而不是字符串。
我甚至无法搜索字符串的行键。
如何使用Pig和HBaseStorage将数据从HDFS存储到HBase中作为字符串而不是字节?
答案 0 :(得分:0)
扫描hbase shell和happybase结果中的字节数,而不是字符串。
我怀疑问题出在你的源数据上,而不是Pig进程本身。
为什么不将源数据复制到本地磁盘并检查?类似的东西:
hadoop fs -copyToLocal /<>/aggregation_test /tmp/aggregation_test
cat /tmp/aggregation_test/*
另一项检查:HBase中的行计数是否符合您的期望?
答案 1 :(得分:0)
您是否尝试过使用HBaseBinaryConverter选项?类似的东西:
store CompleteCases_f into 'hbase://user_test' using
org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'id:DEFAULT id:last_modified birth:year gender:female gender:male','-caster HBaseBinaryConverter'
);