如何在hbase中存储Pig包?

eyh26e7m  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(285)

我要做的是为 HBASEPIG 所以基本上我做了以下工作:

//Loading some address data
CITY = LOAD '/user/root/landingzone/ADRPCDCITY.csv' using PigStorage(';')
AS (dPOST_CODE:chararray, dCITY_CODE:chararray);

//Create the BAG by grouping postal code
B = GROUP CITY by dPOST_CODE;

//Store it in HBASE
STORE B INTO 'hbase://TEST_ADDRESS_VALIDATION'
       USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
       'f1: group, f1:CITY' );

我面临的问题是 BAG 不能铸造到 HBASE Map类

java.lang.ClassCastException: org.apache.pig.data.InternalCachedBag cannot be cast to                                                    java.util.Map

非常感谢你的帮助!

xtfmy6hx

xtfmy6hx1#

更好的是,我有一个解决方案,我想分享

CITY = LOAD '/user/root/landingzone/CITY_Test.csv' using PigStorage(';')
AS (POST_CODE:chararray, CITY_CODE:long, CITY_NAME:chararray);

A = FILTER CITY BY (POST_CODE) IS NOT NULL;

result = FOREACH A GENERATE POST_CODE, TOMAP(UPPER(CITY_NAME), CITY_CODE);

STORE result INTO 'CITY_ADDRESS_VALIDATION' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage( 'f1' );

使用tomap并通过hbastorage保存它,但不在那里分配一个Map,就可以做到这一点。

相关问题