【问题标题】:Using UDF on Avro file in PIg script在 PIg 脚本中对 Avro 文件使用 UDF
【发布时间】:2016-04-19 14:23:40
【问题描述】:

我正在使用 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() 调用,那么我错过了什么?

【问题讨论】:

    标签: hbase apache-pig avro


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多