计算 pig latin 中的标签

count hashtags in pig latin

我有看起来像这样的示例数据集:

tmj_dc_mgmt, Washington, en, 483, 457, 256, ['hiring', 'BusinessMgmt', 'Washington', 'Job']
SRiku0728, 福山市, ja, 6705, 357, 273, ['None']
BesiktaSeyma_, Akyurt, tr, 12921, 1801, 283, ['None']
AnnaKFrick, Virginia, en, 5731, 682, 1120, ['Investment', 'PPP', 'Bogota', 'jobs']
Accprimary, Manchester, en, 1650, 268, 404, ['None']

方括号内的数据是hashtags,我想统计整个列表中的前10个hashtags。

我已经走到这一步了,不知道如何进一步。

twitter_feed = LOAD '/twitter-data-mining/15' USING PigStorage(','); 

hash_tags = FOREACH twitter_feed GENERATE ;

fallten = FILTER hash_tags BY  MATCHES '\w+'|'\w+(\s\w+)*' 

DUMP fallten; 

如能提供正确方向的帮助,我们将不胜感激

谢谢!

加载语句是 incorrect.There 有两种方法可以实现此目的 hashtags.First 方法是使用“[”加载,然后处理字符串以计算 hashtags.Second方法是加载整行并使用 regex_extract_all 获取主题标签。我在下面列出第一个 way.See

  1. 使用“[”作为分隔符加载,这将提供 2 个字段。
  2. 提取第二个字段即 $1 并替换右括号 ']' 和 所有引号 '''.
  3. 对结果字段进行标记以获取所有主题标签。
  4. 过滤不匹配的话题标签'None'
  5. 将主题标签分组
  6. 计算分组数

注意:我没有更改主题标签的大小写,因为它很简单

A = LOAD 'test10.txt' USING PigStorage('[');
B = FOREACH A GENERATE REPLACE(REPLACE(,']',''),'\'','');
C = FOREACH B GENERATE FLATTEN(TOKENIZE(*));
D = FILTER C BY NOT([=10=] MATCHES 'None');
E = GROUP D by [=10=];
F = FOREACH E GENERATE group,COUNT(D.[=10=]);
DUMP F;

输出