当使用Beam对两个表进行连接时,它正常工作,提供了预期的性能,但是随着我的连接表的增加,性能就变得最差了。
下面是我的片段,它可能帮助您调试我在Beam中的连接条件,以获得更好的性能。
PCollection<Row> outputStream2 = PCollectionTuple.of(new TupleTag<>("corporation1"), sourceData)
.and(new TupleTag<>("dim"), dimtable).and(new TupleTag<>("place"), placeData)
.and(new TupleTag<>("principle"), principle).apply(SqlTransform.query(
"Select d.merchant,d.corporation1,d.place,d.principal,c.corporation1_sk,r.place_sk,p.principal_sk FROM dim d LEFT JOIN corporation1 c ON c.corporation1 = d.corporation1 LEFT JOIN place p ON p.place = d.place and c.corporation1 = p.corporation1 "));任何更好的方法,我可以在Beam / Apache上进行连接,因为表中的顺序连接,
其中,前面的输出负责下一个表连接。我尝试过使用Co和SideInput混合方法,在表中数据低于5K的情况下,我选择了SideInput,而数据在50K以上,使用Co加入,但是性能没有达到目标。
发布于 2018-08-14 16:46:54
https://stackoverflow.com/questions/51833871
复制相似问题