Google cloud platform 当运行多个连接时,BeamSQL/ApacheBeam速度较慢
使用Beam SQL在两个表上执行连接时,它工作正常,提供了预期的性能,但随着连接表的增加,性能变得最差 下面是我的代码片段,它可能会帮助您调试beamsql中的连接条件,以获得更好的性能Google cloud platform 当运行多个连接时,BeamSQL/ApacheBeam速度较慢,google-cloud-platform,google-cloud-dataflow,apache-beam,beam-sql,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,Beam Sql,使用Beam SQL在两个表上执行连接时,它工作正常,提供了预期的性能,但随着连接表的增加,性能变得最差 下面是我的代码片段,它可能会帮助您调试beamsql中的连接条件,以获得更好的性能 PCollection<Row> outputStream2 = PCollectionTuple.of(new TupleTag<>("corporation1"), sourceData) .and(new TupleTag<>("dim
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 "));
PCollection outputStream2=PCollectionTuple.of(新TupleTag(“corporation1”),sourceData)
和(新TupleTag(“dim”),dimtable)。和(新TupleTag(“位置”),placeData)
.and(新的TupleTag(“原则”),principle).apply(SqlTransform.query(
“选择d.merchant、d.corporation1、d.place、d.principal、c.corporation1_sk、r.place_sk、p.principal_sk,从d.LEFT JOIN corporation1 c ON c.corporation1=d.corporation1 LEFT JOIN place p ON p.place=d.place和c.corporation1=p.corporation1”);
我能在Beam SQL/Apache Beam上进行连接的任何更好的方法,因为表中的顺序连接,
其中上一个输出负责下一个表联接。
我尝试过使用Co-GroupBy和SideInput混合方法,表中数据低于5K时,我使用SideInput,数据高于50K时,使用Co-GroupBy加入,但性能不达标。看起来您看到了类似的问题,目前还没有解决的ETA。Beam SQL本身目前没有做很多连接优化,它根据接收到的输入类型选择最合适的方法(side input,CoGBK),但基本上就是这样,否则无法控制它 在不知道具体设置的情况下很难确定,例如,您拥有什么样的数据源,或者您如何确保使用side input vs CoGBK,或者您使用什么runner,或者您期望的性能与您实际观察到的性能 相关链接,如果您需要更多详细信息:
- )李>
- )李>
- )李>
- Beam-SQL李>
- 基于CoGBK,这是Beam SQL用于无界联接的功能李>
- )李>
- )李>
- )李>
- Beam-SQL李>
- 基于CoGBK,这是Beam SQL用于无界联接的功能李>