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