繁体   English   中英

在数据流python中联接两个csv数据

[英]Joining two csv data in dataflow python

我有两个csv文件-我想在数据流中进行完全连接

我读为PCollection的两个csv文件

csv1

A | B | C | D | E A | B | C | D | E

csv2

A | B | C | F | G A | B | C | F | G

我需要基于键A,B加入两个P集合A,B并得到如下所示的p集合

A | B | C | D | E | F | G A | B | C | D | E | F | G

试验1

{'left': P_collection_1, 'right': P_collection_2}
            | ' Combine' >> beam.CoGroupByKey()
            | ' ExtractValues' >> beam.Values()

这基本上就像是sql中的完全连接

我相信您确实可以使用CoGroupBykey:

Apache Beam编程指南的电话和电子邮件示例应用到您的案例中,您可以尝试使用PCollection为“ C,D,E”,键为“ A,B”和PCollection为“ F,G”的CoGroupByKey,也以'A,B'为键。

为了更清楚一点,每个PCollection中的元素必须是元组,它们的第一个元素是'A,B'键,第二个元素是'C,D,E'或'F,G'值:

PColl1 = PCollection(
('2,4', '1,2,5'),
('1,10', '4,4,9'),
...) # this is the PCollection of CDE's

PColl2 = PCollection(
('2,4', '30,3'),
('20,1', '2,1'),
...) # this is the PCollection of FG's

(PCollection表示法仅用于说明)

然后我们将申请:

join = {'CDE': PColl1, 'FG': Pcoll2} | beam.CoGroupByKey()

根据编程指南,结果应为:

PCollection(
('2,4', {
        'CDE': ['1,2,5'],
        'FG': ['30,3']
        }
),
('1,10', {
        'CDE': ['4,4,9']
       }
),
('20,1', {
        'FG': ['2,1']
        }
),
...)

如果A和B在同一个文件中多次取值2,4,这不成问题,我们应该在CDE或FG中有多个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM