Spark 执行器在 jdbc 源中没有增加
Posted
技术标签:
【中文标题】Spark 执行器在 jdbc 源中没有增加【英文标题】:Spark executor not increasing in jdbc source 【发布时间】:2019-07-25 13:21:04 【问题描述】:在尝试使用 spark jdbc 连接读取大型 oracle 表时,即使启用了动态分配并且作业被卡在那里,也只有一个执行程序正在调用
我正在运行一个 spark 应用程序来读取两个 oracle 表 -
1) 对于我正在运行具有动态资源分配的 spark 提交应用程序的小表,它会创建 15 个执行程序并在 2 分钟内完成 100 条记录
2) 对于同样使用相同配置的大表,但作业仅在单个 executor 上执行 4 小时,它并没有增加
numpartitions 为 10,但仍使用一个执行器
spark-submit --master yarn-cluster --driver-cores 2 --driver-memory 2G --jars /tmp/ojdbc8.jar --master yarn /tmp/vol_1.py location --executor-memory 12G --executor-cores 5
这是火花限制吗?读取总是发生在单个 executor 上吗?
【问题讨论】:
【参考方案1】:如果没有明确指定,Spark SQL 不会对任何数据进行分区,所有行都由单个执行程序处理。设置分区列(partitionColumn 必须是数字、日期或时间戳列)、下限和上限以及 num 个分区。Check this link
【讨论】:
谢谢,但这似乎不是一个优雅的解决方案,因为不读取数据就不可能得到上限和下限。 sqoop 做同样的事情,不需要任何限制以上是关于Spark 执行器在 jdbc 源中没有增加的主要内容,如果未能解决你的问题,请参考以下文章