我是一个新的猪,并试图解决一个问题的字计数(网站)的多行输入(网站)。例如,我的输入数据集具有以下值
输入数据
Email websites
e1 web1 web2 web3 web1 ....
e2 web2 web3 web2 web2 web4 ...
e3 web1 web2 web1 web4 .....我想要的输出将是
Email websites
e1 web1(2) web2(1) web3(1) ....
e2 web2(3) web3(1) web4(1) ...
e3 web1(2) web2(1) web4(1) .....在我的数据集中,我有将近50000的电子邮件id(用户)
发布于 2013-09-14 08:56:27
假设电子邮件和网站是分开的,而网站本身是分开的。下面是一步一步的代码来获得期望的输出,其主要思想是首先对网站进行标记化,将其扁平化,逐个分组(电子邮件,tokenize_website),生成计数,然后通过电子邮件进行分组。
A = LOAD 'sample.txt' AS (email:chararray, urls:chararray);
B = FOREACH A GENERATE email AS email, FLATTEN(TOKENIZE(urls)) AS tokenize_urls;倾销B
e1 web1
e1 web2
e1 web3
e1 web1
e2 web2
e2 web3
......现在按以下方式分组(电子邮件、令牌化urls)和生成计数
C = GROUP B BY (email, tokenize_urls);
D = FOREACH C GENERATE group.email as email, group.tokenize_urls as url,
COUNT(B) as url_count;倾销D
e1 web1 2
e1 web2 1
e1 web3 1
e2 web2 3
....现在通过电子邮件分组
E = GROUP D BY email;倾销E
e1 {(e1,web1,2),(e1,web2,1),(e1,web3,1)}
e2 {(e2,web2,3),(e2,web3,1)}
e3 {(e3,web1,2),(e3,web2,1),(e3,web4,1)}
......PS:我自己就是猪的新手,所以我的解决方案可能不是最佳的。
https://stackoverflow.com/questions/18794187
复制相似问题