我有2个文件(消息,密钥)。我想把所有的“消息”都从“keys”中提取出来。
messages = LOAD 'my-messages.txt' as (message:chararray);
keys = LOAD 'keys.txt' as (key: chararray);
现在我知道我可以在消息和键之间进行内部连接,但这在以下情况下不起作用:
message = "hi there"
key = "hi"
我认为udf是一种解决问题的方法:
DEFINE containsKey my.udf.Matches("path/keys.txt");
matches = FILTER messages BY containsKey(messages);
然后在自定义项中循环所有键(yikes!)感觉不对…不确定我的方法是否正确,所以请随时提供建议。
1条答案
按热度按时间lqfhib0f1#
这看起来像是一个可以使用cross的用例。裁判:http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#cross
这可能不是一个最佳的解决方案,共享一个可行的方法。
输入:
信息:
钥匙:
Pig脚本:
输出: