从多线程驱动程序启动Apache Spark SQL作业

uh_big_mike_boi:

我想使用Spark从大约1500个远程Oracle表中提取数据,并且我想要一个多线程应用程序,该应用程序每个线程选择一个表,或者每个线程选择10个表,并启动一个Spark作业以从各自的表中读取数据。

从官方Spark网站https://spark.apache.org/docs/latest/job-scheduling.html来看,很明显这可以工作...

...运行Spark的集群管理器为跨应用程序调度提供了便利。其次,在每个Spark应用程序中,如果多个“作业”(Spark操作)是由不同的线程提交的,则它们可能同时运行。如果您的应用程序正在通过网络处理请求,则这很常见。Spark包含一个公平的调度程序,用于调度每个SparkContext中的资源。

但是,您可能已经在Spark中的此类SO 并发作业执行中注意到,该相似问题没有被接受的答案,而最受支持的答案始于

这实际上不是Spark的精神

  1. 每个人都知道这不是Spark的“精神”
  2. 谁在乎Spark的精神是什么?这实际上没有任何意义

有人以前有这样的东西上班吗?你有什么特别的事吗?在我浪费大量工作时间进行原型制作之前,只想提供一些建议。我真的很感谢任何帮助!

lev:

spark上下文是线程安全的,因此可以从多个线程并行调用它。(我正在生产中进行)

要注意的一件事是限制正在运行的线程数,因为:
1.执行程序内存在所有线程之间共享,并且您可能会获得OOM或从缓存中不断地换入和换出内存
2. cpu是有限的,因此拥有比核心更多的任务不会有任何改善

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从驱动程序同时运行几个Spark作业

线程“main”中的异常 java.sql.SQLException:运行 spark-submit 时没有合适的驱动程序

如何使用Scala或Python在Apache Spark中运行多线程作业?

在集群模式下执行spark作业时,驱动程序将在哪里执行

作业之间的 Apache Spark 延迟

SQL作业失败,因为驱动程序无效

Spark作业速度与SQL Server大小相关

多线程SQL火花的作业总是失败

强行删除 spark pod 驱动程序时,驱动程序未重新启动

Spark Checkpointing非流式处理-Checkpoint文件可在后续作业运行或驱动程序中使用

Spark SQL作业的Spark修复任务编号

Apache Spark(Java)上的远程作业

Py4JJavaError:调用o57.sql时发生错误:org.apache.spark.SparkException:作业中止

Spark应用程序中的作业总数

在 Spark 流作业中,如何从执行程序到驱动程序收集错误消息并在每个流批处理结束时记录这些消息?

将Spark SQL数据集用作基于RDD的作业

Spark 驱动程序内存计算

Spark驱动程序内存配置

从spark udf记录到驱动程序

Spark:使用驱动程序内存参数

Spark驱动程序中的内存泄漏

java.sql.SQLException:将DataFrame加载到Spark SQL中时找不到合适的驱动程序

安装 TTU16 ODBC 驱动程序后 SQL Server 2012 作业失败

在Data Lake中创建Spark作业,而不是U-SQL作业

Apache Spark:驱动程序(而不只是执行程序)尝试连接到Cassandra

Apache Spark驱动程序,应用程序和计算资源

Spark和Cassandra Java应用程序:线程“ main”中的异常java.lang.NoClassDefFoundError:org / apache / spark / sql / Dataset

在Spark Streaming作业中一次启动JDBC连接

DataProc Cluster Spark作业提交无法启动NodeManager