如何在 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 文件。
format
格式化 json 的 "text" 字段以清理推文。
parse
通过syntaxnet运行清理后的json生成依赖关系。输出 result2
类似于:
2 Bank _ NOUN NNP _ 3 nn _ _
推文中的每个单词(第二列是单词)。
process_roots
对 result2
进行更多处理并生成 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。
根据您的代码结构,为在各种操作期间保持完整的每一行使用(或添加)唯一标识符。然后在最后阶段将它们全部连接在一起。
我是 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 文件。
format
格式化 json 的 "text" 字段以清理推文。parse
通过syntaxnet运行清理后的json生成依赖关系。输出result2
类似于:
2 Bank _ NOUN NNP _ 3 nn _ _
推文中的每个单词(第二列是单词)。
process_roots
对result2
进行更多处理并生成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。
根据您的代码结构,为在各种操作期间保持完整的每一行使用(或添加)唯一标识符。然后在最后阶段将它们全部连接在一起。