pig两张表字段相同取出不同的值
本帖最后由 Joker 于 2014-12-9 13:19 编辑如题,主要就是
a.txt
a,110,ii
a,120,ii
a,119,ii
a,114,ii
b.txt
a,222,ii
a,333,ii
a,444,ii
a,555,ii
a,666,ii
我要计算出第二个字段也就是数字不相同的数据输出第一行
110,222这样的格式
请问有什么解决办法吗?
使用join ,两张连接之后,然后在比较,最后输出。
xuanxufeng 发表于 2014-12-9 15:21
使用join ,两张连接之后,然后在比较,最后输出。
因为两表字段都不会重复的,所有,左连,右连,内连更本就用不上
根据你贴出的数据
第一个字段和第三个字段,都是一样的。
可以join第一个字段
xuanxufeng 发表于 2014-12-9 15:30
根据你贴出的数据
第一个字段和第三个字段,都是一样的。
可以join第一个字段
这里怪我没做好,真实的数据都不同,并且都是用电话号码做key的来连接的,我现在最主要的就是能把文件1和文件2的电话号码数据放置在一起
假设Pig可以 FOREACH 字段A,字段B GENERATE这样或许就能解决了 可以试一下全连接Full Join
更多内容:
pig入门简单操作及语法包括支持数据类型、函数、关键字、操作符等
pig2 发表于 2014-12-9 15:51
可以试一下全连接Full Join
更多内容:
pig入门简单操作及语法包括支持数据类型、函数、关键字、操作符等 ...
版主还是不行的,之前就试过了{:soso_e149:}
切腹自尽
使用CROSS的话虽然可以连在一起,但是1*5的输出。悲剧了
利用pig的循环试一下。取出数据,然后通过循环比较
Example: Nested BlockSuppose we have relations A and B. Note that relation B contains an inner bag.
A = LOAD 'data' AS (url:chararray,outlink:chararray);
DUMP A;
(www.ccc.com,www.hjk.com)
(www.ddd.com,www.xyz.org)
(www.aaa.com,www.cvn.org)
(www.www.com,www.kpt.net)
(www.www.com,www.xyz.org)
(www.ddd.com,www.xyz.org)
B = GROUP A BY url;
DUMP B;
(www.aaa.com,{(www.aaa.com,www.cvn.org)})
(www.ccc.com,{(www.ccc.com,www.hjk.com)})
(www.ddd.com,{(www.ddd.com,www.xyz.org),(www.ddd.com,www.xyz.org)})
(www.www.com,{(www.www.com,www.kpt.net),(www.www.com,www.xyz.org)})
In this example we perform two of the operations allowed in a nested block, FILTER and DISTINCT. Note that the last statement in the nested block must be GENERATE. Also, note the use of projection (PA = FA.outlink;).
X = FOREACH B {
FA= FILTER A BY outlink == 'www.xyz.org';
PA = FA.outlink;
DA = DISTINCT PA;
GENERATE group, COUNT(DA);
}
DUMP X;
(www.aaa.com,0)
(www.ccc.com,0)
(www.ddd.com,1)
(www.www.com,1)
muyannian 发表于 2014-12-9 17:12
利用pig的循环试一下。取出数据,然后通过循环比较
Example: Nested BlockSuppose we have relations A...
循环取出数据,假设FOREACH A字段,我如何把B字段数据拿出?
问题就在这里,一直困扰着
页:
[1]
2