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

How to Join 2 different variables in Pig?

我是 pig 的新手,我编写了以下 pig 脚本:

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 类似于:

2 Bank _ NOUN NNP _ 3 nn _ _

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

  1. process_rootsresult2 进行更多处理并生成 result3,这是一个 json 字段,如下所示:

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 编写了这段代码,但它抛出了一个错误。请告诉我什么是正确的做法。

串联是针对字段的,但是您正在尝试组合多个别名。

合并别名的方法是 join


根据您的代码结构,为在各种操作期间保持完整的每一行使用(或添加)唯一标识符。然后在最后阶段将它们全部连接在一起。