如何在Pig中加入2个不同的变量?

时间:2016-09-12 21:04:45

标签: json hadoop apache-pig concat

我是猪的新手,我写了以下猪脚:

DEFINE format `format_text.py $EMOJI $ACRONYM` SHIP ('$STREAM_FILE_PATH/format_text.py');

DEFINE parse `parse.sh` SHIP ('$STREAM_FILE_PATH_SYNTAXNET/parse.sh');

DEFINE process_roots `process_roots.py` SHIP ('$STREAM_FILE_PATH_SYNTAXNET/process_roots.py');

input_data = LOAD '$DATA_INPUT';

result1 = STREAM input_data THROUGH format;
result2 = STREAM result1 THROUGH parse;
result3 = STREAM result2 THROUGH process_roots;

result4 = foreach result1 Generate CONCAT (result1, result3);

STORE result1 into '$DATA_OUTPUT';
STORE result2 into '$SYNTAXNET_OUTPUT';
STORE result4 into '$SYNTAXNET_RESULTS';

所以,我的input_data是推文的json文件。

  1. format格式化json的“text”字段以清理推文。
  2. parse通过syntaxnet运行已清理的json以生成依赖关系。输出result2类似于:
  3. 2 Bank _ NOUN NNP _ 3 nn _ _

    对于推文的每个单词(其中第二列是单词)。

    1. process_rootsresult2上执行了一些处理并生成result3,这是一个类似的json字段:
    2. avl_tags_syntaxnet: [{'pos_tag': 'NNP', 'position': '1', 'dep_rel': 'nn', 'parent': '3', 'word': 'US'}, ....................... {'pos_tag': '.', 'position': '30', 'dep_rel': 'punct', 'parent': '23', 'word': '...'}]

      现在,我想要做的就是将新创建的Json字段(result3)附加到result1并将其存储在某处。我在pig中读到CONCAT并在pig脚本中为result4编写了这段代码,但是它引发了一个错误。请告诉我什么是正确的方法。

1 个答案:

答案 0 :(得分:1)

连接是针对字段的,但是您尝试组合多个别名。

组合别名的方法是使用加入

根据代码的结构,使用(或添加)每个行的唯一标识符,在各种操作期间保持完整。然后在最后阶段将所有人加在一起。