使用apache pig搜索hashtags

rfbsl7qr  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(279)

我正在尝试确定包含以下格式tweets的文本文件中的前10个hashtag:

USER_79321756   2010-03-05T04:48:05 ÜT: 47.528139,-122.197916   47.528139   -122.197916 Just talkin too for real. Ha.
USER_79321756   2010-03-05T20:25:56 ÜT: 47.528139,-122.197916   47.528139   -122.197916 RT @USER_620cd4b9: @USER_79321756 hey now! Leave me, and my big eyes alone LOL>>lol NO! :*
USER_4659ef22   2010-03-06T05:50:54 ÜT: 40.816206,-73.894429    40.816206   -73.894429  But where's @USER_55e0f4ff?? Hmmm shawty where u at?
USER_064b120e   2010-03-03T18:56:49 ÜT: 34.223957,-118.600448   34.223957   -118.600448 @USER_4a4d09c2 the ludacris one . have you heard it , he got off on that one .

为此,我想出了以下代码片段。
代码:

a = load '/user/lab/pig/full_text_small.txt' AS (id:chararray, ts:chararray, location:chararray, lat:float, lon:float, tweet:chararray);
b = foreach a generate tweet, FLATTEN(TOKENIZE(LOWER(tweet))) as tokens;
c = filter b by STARTSWITH(tokens,'#');
d = group c by tokens;
e = foreach d generate group as tokens, COUNT(c) as cnt;
f = order e by cnt desc;
g = limit f 10;
dump g;

结果如下所示。
结果:

(#ff, 55)
  (#inhighschool, 25)
  ...
  ...
  ...
  ...
  ...
  ...
  (#random, 9)
  (#mewithoutyouislike, 7)

我还包括了输出的图像。
显示前10个标签的输出
但是,如果我在word编辑器中打开包含tweets的文本文件(full#text#small.txt)并搜索hashtag“#ff”(不区分大小写),我得到的总数是61,而不是55。类似地,输出中所有其他hashtag的计数与使用pig获得的计数不同。
此外,当我使用一种不同的匹配技术时,即下面所示的方法,我得到的结果略有不同。
代码:

a = load '/user/lab/pig/full_text_small.txt' AS (id:chararray, ts:chararray, location:chararray, lat:float, lon:float, tweet:chararray);
b = foreach a generate tweet, FLATTEN(TOKENIZE(LOWER(tweet))) as tokens;
c = filter b by tokens MATCHES '#\\s*(\\w+)';
d = group c by tokens;
e = foreach d generate group as tokens, COUNT(c) as cnt;
f = order e by cnt desc;
g = limit f 10;
dump g;

结果:

(#ff, 55)
  (#inhighschool, 25)
  ...
  ...
  ...
  ...
  ...
  ...
  (#random, 9)
  (#realgrandmas, 7)

第二个代码段的输出图像:
第二输出
除了最后一个之外,这两个代码段的输出中的所有hashtag都是相同的。
我的问题如下:
为什么这两个代码片段的最后一个hashtag的结果不同?
为什么使用这些代码片段获得的结果与使用文本编辑器中的搜索函数获得的结果不匹配?

9ceoxa92

9ceoxa921#

以下是我的理论:
上一次更改的hashtag与您提到的两个片段没有任何关系。由于这两个hashtag具有相同的计数,因此不确定在测试期间哪个将获得更高的偏好 SORT 以及随后的 LIMIT .
既然你用的是 TOKENIZE 接着是一个 STARTSWITH ,您希望hashtags前面有一个空格。在文本编辑器中搜索时,您的搜索可能包含“#ff”标签,而这些标签前面也没有空格。

相关问题