2014-01-14 53 views
0

如果我使用hbase shell和問題:如何讓Pig將行存儲在HBase中的字符串不是字節?

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 

我會看到的結果作爲一個字符串,而不是字節。

我有蜂巢,我跑了一個聚合數據,並通過存儲在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 

但是,如果我發出豬如下:

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 shellhappybase結果以字節爲單位,而不是字符串。

我甚至不能搜索一個字符串的行鍵。

如何使用Pig和HBaseStorage將數據從HDFS存儲到HBase中,因爲字符串不是字節?

回答

0

在hbase shell和happybase中掃描的結果是字節,而不是字符串。

我懷疑問題出在你的源數據上,而不是豬進程本身。

爲什麼不將源數據複製到本地磁盤並檢查?例如:

hadoop fs -copyToLocal /<>/aggregation_test /tmp/aggregation_test 
cat /tmp/aggregation_test/* 

另一個檢查:HBase計數中的行數是否與您所期望的一致?

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' 
); 
相關問題