对不起,问题的措辞有误。我对stackoverflow是个新手,对pig也是个新手,我也尝试着自己做实验。
我有一个处理words.t文件和data.txt文件的场景。
文字.txt
word1
word2
word3
word4
数据.txt
{"created_at":"18:47:31,Sun Sep 30 2012","text":"RT @Joey7Barton: ..give a word1 about whether the americans wins a Ryder cup. I mean surely he has slightly more important matters. #fami ...","user_id":450990391,"id":252479809098223616}
我需要得到输出作为
(word1\u epochtime){文本属性中匹配的完整数据}
即
(word1_1234567890){"created_at":"18:47:31,Sun Sep 30 2012","text":"RT @Joey7Barton: ..give a word1 about whether the americans wins a Ryder cup. I mean surely he has slightly more important matters. #fami ...","user_id":450990391,"id":252479809098223616}
我的输出是
(word1){“created_at”:“18:47:31,sun sep 30 2012”,“text”:“rt@joey 7barton:……请用词1说明美国人是否赢得莱德杯。我是说他肯定还有更重要的事#fami…,“用户id”:450990391,“id”:25247980989823616}
通过使用此脚本。
load words.txt
load data.txt
c = cross words,data;
d = FILTER c BY (data::text MATCHES CONCAT(CONCAT('.*',words::word),'.*'));
e = foreach (group d BY word) {data);
我得到了一个年代,上面写着
time = FOREACH words GENERATE CONCAT(CONCAT(word,'_'),(chararray)ToUnixTime(CurrentTime(created_at));
但我无法用时间来表达这些话。
我怎样才能得到输出
(word1_time){data}
请随时向我推荐以上内容。谢谢您。
2条答案
按热度按时间yhxst69z1#
根据这个引用,concat接受两个“字段”作为输入。我想你的问题是
(chararray)ToUnixTime(CurrentTime())
,不是字段名。您可以生成表示当前时间戳值的字段,然后在concat函数中使用它。iezvtpos2#
我想我得到了结果。这是我写的剧本。