hadoop - 无法在 FOREACH block 内调用 PIG 宏

标签 hadoop hdfs apache-pig

我无法从 foreach 中调用宏,例如

 DEFINE valid_attribute(id,attribute)
    RETURNS result {
            data       =       LOAD '/user/sathish/sessAttr' AS (id:chararray,browser_version:chararray);
         filtered_data      = FILTER data BY id == '$id' AND $attribute is NOT null;
         $result            = foreach filtered_data generate $attribute;
    };

    ip = load '/user/sathish/macros/inputParams' AS (id:chararray,attribute:chararray);
    op = foreach ip {generate valid_attribute('ip::id','ip:attribute');};
    dump op;

调用相同时出现以下异常:

2013-06-25 04:47:42,239 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve valid_attribute using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]

最佳答案

您不能以这种方式使用宏。宏返回一个关系(表),而不是一个单独的值。 GENERATE 用于在您的关系中生成单独的值。您使用宏的方式看起来就像是在尝试使用 UDF,这就是 Pig 在其默认类路径中查找函数的原因,就像在任何 UDF 中一样。

关于hadoop - 无法在 FOREACH block 内调用 PIG 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296706/

相关文章:

hadoop - 使用 zkcli.sh bash 通过 oozie shell 操作将 solr 配置从 hdfs 发送到 zookeeper

hadoop - 如何将 hdfs 文件读入 apache beam?

hadoop - 使用Pig脚本创建架构

mongodb - 如何使用 spark 和 mongo Hadoop 连接器更新 mongo 集合中的多个字段?

python - 如何进行 3 阶段 Map Reduce 流式处理?

apache-kafka - 对新列使用不同的 avro 架构

hadoop - 使用 Pig/Hive 进行数据处理而不是直接使用 java map reduce 代码?

bash - Hadoop fs -du-h 按大小对 M、G、T、P、E、Z、Y 进行排序

java - Hadoop mapreduce空输入格式

map - PigLatin 映射键值