【发布时间】:2017-07-11 04:04:02
【问题描述】:
Spark 允许您从 sql db 源并行读取,并且可以基于滑动窗口进行分区,例如(来自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。如果我们事先不知道将有多少行(从 1 到 2 百万不等)写入 SQL 源数据库,那么在这种情况下,进行分区的最佳方法或做法是什么。
一种方法是估计您的上限,但我不确定这是一种正确的方法。
【问题讨论】:
标签: mysql apache-spark apache-spark-sql spark-dataframe