计算猪拉丁语中的主题标签

时间:2016-05-13 12:19:34

标签: hadoop apache-pig

我的样本数据集看起来像这样:

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']

方括号内的数据是主题标签,我想计算整个列表中的前10个主题标签。

我已达到目前为止,不知道如何进一步行动。

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

hash_tags = FOREACH twitter_feed GENERATE $7;

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

DUMP fallten; 

任何正确方向的帮助都将不胜感激

谢谢!

1 个答案:

答案 0 :(得分:3)

load语句不正确。有两种方法可以实现这一点来获取主题标签。第一种方法是使用' ['然后操纵字符串来计算hashtags。第二种方法是加载整行并使用regex_extract_all获取主题标签。我列出了第一种方式。见下文

  1. 使用' ['作为将给出2个字段的分隔符。
  2. 提取第二个字段,即$ 1,并替换右括号']'和     所有引用'''。
  3. 对结果字段进行标记以获取所有标签。
  4. 过滤不匹配'无'
  5. 的主题标签
  6. 对主题标签进行分组
  7. 统计分组
  8. 注意:我没有改变主题标签的情况,因为它很简单

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

    <强>输出

    Output