Joker 发表于 2014-12-9 13:17:54

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这样的格式

请问有什么解决办法吗?

xuanxufeng 发表于 2014-12-9 15:21:50


使用join ,两张连接之后,然后在比较,最后输出。

Joker 发表于 2014-12-9 15:27:51

xuanxufeng 发表于 2014-12-9 15:21
使用join ,两张连接之后,然后在比较,最后输出。

因为两表字段都不会重复的,所有,左连,右连,内连更本就用不上

xuanxufeng 发表于 2014-12-9 15:30:18

根据你贴出的数据
第一个字段和第三个字段,都是一样的。
可以join第一个字段

Joker 发表于 2014-12-9 15:40:08

xuanxufeng 发表于 2014-12-9 15:30
根据你贴出的数据
第一个字段和第三个字段,都是一样的。
可以join第一个字段

这里怪我没做好,真实的数据都不同,并且都是用电话号码做key的来连接的,我现在最主要的就是能把文件1和文件2的电话号码数据放置在一起

Joker 发表于 2014-12-9 15:42:51

假设Pig可以 FOREACH 字段A,字段B GENERATE这样或许就能解决了

pig2 发表于 2014-12-9 15:51:40

可以试一下全连接Full Join
更多内容:
pig入门简单操作及语法包括支持数据类型、函数、关键字、操作符等

Joker 发表于 2014-12-9 16:05:39

pig2 发表于 2014-12-9 15:51
可以试一下全连接Full Join
更多内容:
pig入门简单操作及语法包括支持数据类型、函数、关键字、操作符等 ...

版主还是不行的,之前就试过了{:soso_e149:}
切腹自尽

使用CROSS的话虽然可以连在一起,但是1*5的输出。悲剧了

muyannian 发表于 2014-12-9 17:12:55

利用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)


Joker 发表于 2014-12-9 17:40:35

muyannian 发表于 2014-12-9 17:12
利用pig的循环试一下。取出数据,然后通过循环比较

Example: Nested BlockSuppose we have relations A...

循环取出数据,假设FOREACH A字段,我如何把B字段数据拿出?
问题就在这里,一直困扰着
页: [1] 2
查看完整版本: pig两张表字段相同取出不同的值