【发布时间】:2018-03-13 09:46:51
【问题描述】:
如何使用JDBC 进行并行化?
这是我的代码:
spark = SparkSession.builder.getOrCreate()
DF = spark.read.jdbc( url = ...,
table = '...',
column = 'XXXX',
lowerBound = Z,
upperBound = Y,
numPartitions = K
)
我想知道以下参数之间的关系以及是否有办法正确选择它们:
-
column-> 它应该是为分区选择的列
(它需要是数字列吗?) -
lowerBound-> 选择它有经验法则吗? -
upperBound-> 选择它有经验法则吗? -
numPartitions-> 选择它有经验法则吗?
我明白了
stride = ( upperBound / numPartitions ) - ( lowerBound / numPartitions )
每个分区中是否有很多“步幅”?
换句话说,在所有观察完成之前,分区是否充满了一大堆步幅?
请看this picture 了解问题的意义,考虑以下参数:
lowerBound 80.000
upperBound 180.000
numPartitions 8
Stride 12.500
注意:
min('XXXX') = 0
max('XXXX') = 350.000
('XXXX').count() = 500.000.000
附:我看了documentation和this的答案,但不是很明白。
【问题讨论】:
标签: python-3.x apache-spark jdbc parallel-processing pyspark