gpt4 book ai didi

mysql - 在不知道上限的情况下使用spark并行读取sql数据库

转载 作者:可可西里 更新时间:2023-11-01 07:36:28 26 4
gpt4 key购买 nike

Spark 允许您从 sql 数据库源并行读取,并且可以基于滑动窗口进行分区,例如(来自 book,第 7 章)

 val colName = "count"
val lowerBound = 0L
val upperBound = 348113L // this is the max count in our table
val numPartitions = 10

spark.read.jdbc(url,
tablename,
colName,
lowerBound,
upperBound,
numPartitions,
props).count()

这里,上限是预先知道的。

比方说,一个表在一天内获得“x”行(可能在 1-2 百万之间),在一天结束时我们提交一个 spark 作业,进行一些转换并写入 Parquet/CSV/JSON。如果我们事先不知道将向 SQL 源数据库写入多少行(从 1 到 2 百万不等),那么在这种情况下,进行分区的最佳方法或做法是什么。

一种方法是估计您的上限,但我不确定这是正确的方法。

最佳答案

我遇到了完全相同的问题。我还需要一个随机分布。所以我选择一个 int 列并在其上获取 mod 10。这样我就可以不关心地划分任何东西边界或分布。

options += ("numPartitions" -> numPartitions,"partitionColumn"->"mod(my_int_column,10)","lowerBound"->"0","upperBound"->"9")

关于mysql - 在不知道上限的情况下使用spark并行读取sql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45025187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com