在PIg脚本中的Avro文件上使用UDF

时间:2016-04-19 14:23:41

标签: hbase apache-pig avro

我使用Pig将HDFS上的avro文件导入HBase,但我必须将用户定义的函数(UDF)应用于行id。我正在使用Apache DataFU

中的SHA功能
register datafu-pig-incubating-1.3.0.jar
define SHA datafu.pig.hash.SHA();

set hbase.zookeeper.quorum 'localhost';
set mapreduce.fileoutputcommitter.marksuccessfuljobs 'false';

avro = LOAD '/user/myuser/avro/' USING AvroStorage();
partitioned = FOREACH avro GENERATE SHA(ROW_ID) as key,VALUE_1,VALUE_2;

STORE partitioned INTO 'hbase://MYTABLE' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('cf:value_1 cf:value_2');

我已经尝试过DataFU网站上的示例脚本,并且它们已成功完成,如果我从脚本中删除了SHA()调用,那么我还缺少什么?

1 个答案:

答案 0 :(得分:0)

没关系,这是我自己的错。 SHA()调用期望一个字符串参数,ROW_ID定义为long,我为ROW_ID添加了一个强制转换为chararray,现在可以正常工作

如果我将脚本作为oozie工作流程的一部分运行,则日志中没有错误,但是如果我逐行将其输入到grunt shell中,则在“partitioned =”行

对于遇到UDF问题的人,我建议先在shell中逐行输入脚本