[英]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.