作者:mjh3804260 | 来源:互联网 | 2023-01-04 19:09
我想使用Spark从约1500个远程Oracle表中提取数据,并且我想要一个多线程应用程序,该应用程序每个线程选择一个表,或者每个线程选择10个表,并启动一个Spark作业以从各自的表中读取数据。
从官方Spark网站https://spark.apache.org/docs/latest/job-scheduling.html来看,很明显它可以工作...
...运行Spark的集群管理器为跨应用程序调度提供了便利。其次,在每个Spark应用程序中,如果多个“作业”(Spark操作)是由不同的线程提交的,则它们可能同时运行。如果您的应用程序通过网络处理请求,则这很常见。Spark包含一个公平的调度程序,用于调度每个SparkContext中的资源。
但是,您可能已经在Spark中的此类SO 并发作业执行中注意到,该相似问题没有被接受的答案,而最受支持的答案始于
这实际上不是Spark的精神
每个人都知道这不是Spark的“精神”
谁在乎Spark的精神是什么?这实际上没有任何意义
有人以前有这样的东西可以工作吗?你有什么特别的事吗?在我浪费大量工作时间进行原型设计之前,只想提供一些建议。我真的很感谢任何帮助!
1> lev..:
spark上下文是线程安全的,因此可以从多个线程并行调用它。(我正在生产中进行)
要注意的一件事是限制正在运行的线程数,因为:
1.执行程序内存在所有线程之间共享,并且您可能会获得OOM或不断从高速缓存中换入和换出内存
2. cpu是有限的,因此拥有比核心更多的任务不会有任何改善