gpt4 book ai didi

java - 如何在 Apache PIG 中正确执行此内部连接?

转载 作者:可可西里 更新时间:2023-11-01 16:24:12 25 4
gpt4 key购买 nike

我有两个文件,一个叫做a-records

123^record1
222^record2
333^record3

还有另一个叫做b-records的文件

123^jim
123^jim
222^mike
333^joe

你可以在文件 A 中看到我有一次 token 123。在文件 B 中,它在那里两次。有没有一种方法可以使用 Apache PIG 连接数据,这样我只能从 A 文件中获得一个连接记录?

这是我当前的脚本,它输出以下内容

arecords = LOAD '$a'  USING PigStorage('^')  as (token:chararray, type:chararray);

brecords = LOAD '$b' USING PigStorage('^') as (token:chararray, name:chararray);


x = JOIN arecords BY token, brecords BY token;

dump x;

产生:

(123,record1,123,jim)
(123,record1,123,jim)
(222,record2,222,mike)
(333,record3,333,joe)

当我真正想要的是(注意 token 123 在加入后只在那里一次)

(123,record1,123,jim)
(222,record2,222,mike)
(333,record3,333,joe)

有什么想法吗?非常感谢

最佳答案

我会做这样的事情:

arecords = LOAD '$a'  USING PigStorage('^')  as (token:chararray, type:chararray);

brecords = LOAD '$b' USING PigStorage('^') as (token:chararray, name:chararray);

bdistinct = DISTINCT brecords;

x = JOIN arecords BY token, bdistinct BY token;

dump x;

关于java - 如何在 Apache PIG 中正确执行此内部连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7790079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com