在Spark中通过JDBC连接从Server获取数据时,我发现可以设置一些并行化参数,如partitionColumn、lowerBound、upperBound和numPartitions。我已经通过了火花文档,但无法理解它。
有人能解释一下这些参数的含义吗?
发布于 2017-03-10 17:13:35
实际上,上面的列表遗漏了一些东西,特别是第一个和最后一个查询。
没有它们,您将丢失一些数据( lowerBound之前的数据和upperBound之后的数据)。由于下界为0,所以示例中的内容不清楚。
完整的清单应是:
SELECT * FROM table WHERE partitionColumn < 100
SELECT * FROM table WHERE partitionColumn BETWEEN 0 AND 100
SELECT * FROM table WHERE partitionColumn BETWEEN 100 AND 200 ..。
SELECT * FROM table WHERE partitionColumn > 9000发布于 2016-12-11 11:19:12
它很简单:
partitionColumn是一个列,应该用来确定分区。lowerBound和upperBound确定要获取的值的范围。完整数据集将使用与以下查询相对应的行:
从partitionColumn在lowerBound和upperBound之间的表中选择*numPartitions确定要创建的分区的数量。lowerBound和upperBound之间的范围被划分为numPartitions,每一个步幅等于:
upperBound / numPartitions - lowerBound / numPartitions
例如,如果:- `lowerBound`: 0
- `upperBound`: 1000
- `numPartitions`: 10Stride等于100,分区对应于以下查询:
- `SELECT * FROM table WHERE partitionColumn BETWEEN 0 AND 100`
- `SELECT * FROM table WHERE partitionColumn BETWEEN 100 AND 200`
- `...`
- `SELECT * FROM table WHERE partitionColumn BETWEEN 900 AND 1000`
发布于 2018-09-01 21:27:21
创建分区不会因过滤而导致数据丢失。upperBound、lowerbound和numPartitions只是定义了如何创建分区。upperBound和lowerbound没有为要获取的partitionColumn值定义范围(筛选器)。
For a given input of lowerBound (l), upperBound (u) and numPartitions (n)
The partitions are created as follows:
stride, s= (u-l)/n
**SELECT * FROM table WHERE partitionColumn < l+s or partitionColumn is null**
SELECT * FROM table WHERE partitionColumn >= l+s AND <2s
SELECT * FROM table WHERE partitionColumn >= l+2s AND <3s
...
**SELECT * FROM table WHERE partitionColumn >= l+(n-1)s**例如,对于upperBound = 500、lowerBound = 0和numPartitions = 5。分区将按照以下查询进行:
SELECT * FROM table WHERE partitionColumn < 100 or partitionColumn is null
SELECT * FROM table WHERE partitionColumn >= 100 AND <200
SELECT * FROM table WHERE partitionColumn >= 200 AND <300
SELECT * FROM table WHERE partitionColumn >= 300 AND <400
...
SELECT * FROM table WHERE partitionColumn >= 400根据partitionColumn的实际值范围,每个分区的结果大小将有所不同。
https://stackoverflow.com/questions/41085238
复制相似问题