使用Spark 1.6.2 JDBC读取Oracle数据时的并行性

钱德拉

我们有大约4000万张桌子的记录。

使用Spark 1.6.2从Oracle读取数据lowerBound如何选择upperBound,和的值numPartitions

我有分区键。我们有datastax集群-3个节点-每个18核-每个27 GB

提前致谢。

T·高文达

最简单的启发式方法是计算列值的最小值和最大值。在SQL(普通JDBC)中,您可以运行:

select min(column) as lowerBound, max(column) as upperBound from table;

然后将lowerBound和upperBound设置为查询结果。

但是,它并不总是那么简单。有时,列的分布很偏斜-例如,SomeFunnyID可能有[0..100]范围内的100x值,然后高于100000的100.000.000x值。然后,您的阅读将非常偏斜,因此速度变慢。

在这种情况下,我建议将dbtable参数设置select mod(s.someFunnyID, partitionCount) as partition_key, s.* from table s,然后将查询设置lowerBound0"upperBound"partitionCount

val partitionCount = // here choose partition count
val df = spark.read.jdbc(...)
    .option("dbtable", s"select mod(s.someFunnyID, $partitionCount) as partition_key, s.* from table s")
    .option("lowerBound", "0")
    .option("upperBound", partitionCount)
    .option("partitionColumn", "partition_key")
    .load()

对于partitionCount,我只有一种简单的试探法:执行者数量*执行者核心

请注意,每次必须对配置进行基准测试以查看其是否正确

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spark 2 中窗口函数的并行性

使用takeWhile时,StreamEx并行性是否可以工作?

spark.mllib中的并行性

使用NAudio在Unity中创建AudioClip,在读取数据时冻结1-2秒

减少JDBC读取并行性的合并

如何使用张量流将 [1,2,3,4,5,6] 重塑为 [[1,3,5],[2,4,6]]?

Bootstrap 6-4-2-1列

需要处理表列表时,Spark sql中的并行性

如何遍历可能的整数数组,例如从[1,1,1,1]到[1,1,1,2],...,最后到[6,6,6,6]?

我想把数组 [1,2,3,4,5,6,7,8,9,10,11] 变成数组 [1,2,3,4,5,6,7,8,9,1 ,0,1,1] 仅使用此算法

使用VB6将缺少的节点从Treeview1添加到Treeview2

使用RXJS 5.0.0-beta.6和Angular 2 RC1导入运算符

数据库值为 ["", "5", "1", "2", "8", "6", "9"] 在 Rails Console 中显示为 "[\"\", \"5\", \"1\"、\"2\"、\"8\"、\"6\"、\"9\"]"?

使用Mockk的KotlinTest并行性

使用条件锁定控制并行性?

Postgresql - 不使用并行性

SW1:选择卡时出现6e SW2:00错误

查询数据为解析数组的列的关系表(1,2,3,4,5,6)

使用ngFormModel(ES6)时angular2无法读取未定义的属性'validator'

Flink,使用多个Kafka源时如何正确设置并行性?

使用netcdf数据和python在6小时的时间步平均2十年的数据

Spark流上下文中的流并行性

VB6使用写入#1,(UnitCount

Pandas、Bokeh 或使用任何绘图库来移动季节性数据的 x 轴(第 7 -> 12 -> 6 个月或 7 月 1 - 6 月 30 日)

交换以2的[1,2,3,4,5,6] = [2,1,4,3,6,5]分组的相邻元素

vector <int> + = 1,1,2,2,2,3,4,5,6如何; 可能?

如何使用pcl的聚类方法对6d数据进行聚类,例如Eigen :: Matrix <double,6,1>

使用R中的四对(1,2),(3,4),(5,6),(7,8)中的三对进行6个数字的组合

为什么spark blas在1级例程中使用f2jBLAS而不是本机BLAS?