Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 当运行多个连接时,BeamSQL/ApacheBeam速度较慢_Google Cloud Platform_Google Cloud Dataflow_Apache Beam_Beam Sql - Fatal编程技术网

Google cloud platform 当运行多个连接时,BeamSQL/ApacheBeam速度较慢

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

使用Beam SQL在两个表上执行连接时,它工作正常,提供了预期的性能,但随着连接表的增加,性能变得最差

下面是我的代码片段,它可能会帮助您调试beamsql中的连接条件,以获得更好的性能

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用于无界联接的功能
您似乎看到了类似的问题,目前还没有解决该问题的ETA。Beam SQL本身目前没有做很多连接优化,它根据接收到的输入类型选择最合适的方法(side input,CoGBK),但基本上就是这样,否则无法控制它

在不知道具体设置的情况下很难确定,例如,您拥有什么样的数据源,或者您如何确保使用side input vs CoGBK,或者您使用什么runner,或者您期望的性能与您实际观察到的性能

相关链接,如果您需要更多详细信息:

  • )
  • )
  • )
  • Beam-SQL
  • 基于CoGBK,这是Beam SQL用于无界联接的功能
嗨,安东,你有什么解决办法吗?没有,对不起,没有新的指南。我建议留下评论,这样它会有更高的可视性Hi Anton,你有什么解决方案吗?没有,抱歉,没有新的指南。我建议留下评论,这样它的可视性会更高。嗨,有什么解决办法吗?我也面临同样的问题。嗨,有什么解决办法吗?我也面临同样的问题。