gpt4 book ai didi

hadoop - PIG-Hadoop - 在 PIG 中有一种方法可以使用 Regex 进行内部连接

转载 作者:可可西里 更新时间:2023-11-01 16:30:55 25 4
gpt4 key购买 nike

我有 2 个文件(消息、 key )。我想从“消息”中提取所有包含“键”中的单词的行。

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);

然后在 UDF 循环中遍历所有键(哎呀!)感觉不对...不确定我的方法是否正确,所以请随时提供建议。

最佳答案

这看起来像是可以使用 CROSS 的用例。引用:http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#CROSS

这可能不是最佳解决方案,分享一个可行的方法。

输入:

消息:

hi there
He said "Hi, how are you doing ?"
HI there
Hello there

键:

hi

pig 脚本:

messages = LOAD 'messages.csv' USING PigStorage('\t') AS (message:chararray);
keys = LOAD 'keys.csv' USING PigStorage('\t') AS (key:chararray);

crossed_data = CROSS messages, keys ;

filt_required_data = FILTER crossed_data BY LOWER(messages::message) MATCHES CONCAT('.*', LOWER(keys::key), '.*');

required_data = FOREACH filt_required_data GENERATE messages::message AS message;

DUMP required_data;

输出:

(hi there)
(He said "Hi, how are you doing ?")
(HI there)

关于hadoop - PIG-Hadoop - 在 PIG 中有一种方法可以使用 Regex 进行内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com