Java 如何使用ApacheBeam在BigQuery中执行快速连接
根据BEAM的,并根据多个Java 如何使用ApacheBeam在BigQuery中执行快速连接,java,google-bigquery,google-cloud-dataflow,apache-beam,Java,Google Bigquery,Google Cloud Dataflow,Apache Beam,根据BEAM的,并根据多个连接可以通过CoGropByKey或KeyedPCollectionTuple()实现 没有人在谈论这种转换的性能 我的流程应该非常简单:从BQ表(TableRow)批量输入行,并通过相同的键将它们与其他BQ表中的其他值连接(或“充实”)。因此,最终输出的类型也应该是TableRow 我想了解将BEAM中的两个表与BQ表连接起来的最佳实践是什么 例如,我可以在BQ中创建一个视图,替换所有这些管道并执行更高效的连接操作,但我希望处理代码中的所有逻辑 当执行join操作时,
连接可以通过CoGropByKey
或KeyedPCollectionTuple
()实现
没有人在谈论这种转换的性能
我的流程应该非常简单:从BQ表(TableRow
)批量输入行,并通过相同的键将它们与其他BQ表中的其他值连接(或“充实”)。因此,最终输出的类型也应该是TableRow
我想了解将BEAM中的两个表与BQ表连接起来的最佳实践是什么
例如,我可以在BQ中创建一个视图,替换所有这些管道并执行更高效的连接操作,但我希望处理代码中的所有逻辑
当执行join
操作时,发动机罩下发生了什么
DirectRunner
是否会对第二个BQ表执行n次查询,以加入所有管道批处理(一项接一项)?或者BEAM足够聪明,可以聚合它并对所有批次执行1次查询
GoogleDataflowRunner
是否以不同的方式工作
除了检查运行时间外,我如何检查此管道的性能?TTBOMK您不想在代码中编写完整的SQL,例如WHERE子句。
Beam或任何基于代码的SQL连接都会在保留在BQ中的大量数据上失败。
因此,任何这样的“充实”都应该由底层的数据处理解决方案来完成,无论是BQ之上的SQL还是RDD/DataFrames等之上的Spark
请注意,它不太适合流式处理,而更适合批量处理。
如果您想遵循纯流式方式,您应该根据您的域使用快速DBs,并避免OLAP风格(真正的柱状)DBs。BQ对每个查询都有很大的延迟
告诉我们进展如何:)