当前位置: 首页 > 知识库问答 >
问题:

我如何在Spark中并行化多个数据集?

公西博实
2023-03-14

我有一个Spark2.1工作,在这里我维护多个数据集对象/RDD,它们代表我们底层Hive/HDFS数据存储上的不同查询。我注意到,如果我简单地迭代数据集列表,它们一次执行一个。每个单独的查询都是并行操作的,但是我觉得我们没有通过并行运行不同的数据集来最大化我们的资源。

共有1个答案

公羊向荣
2023-03-14

是的,您可以在驱动程序代码中使用多线程,但通常情况下这不会提高性能,除非您的查询操作在非常偏斜的数据上和/或不能很好地并行化以充分利用资源。

你可以这样做:

val datasets : Seq[Dataset[_]] = ???

datasets
  .par // transform to parallel Seq
  .foreach(ds => ds.write.saveAsTable(...) 
 类似资料:
  • 一个spark有一个oracle查询。所以我必须并行运行多个作业,以便所有查询都将同时激发。 如何并行运行多个作业?

  • 使用spark或任何其他大数据框架是否有更有效的方法来实现这一点?目前,我使用的是sparkSQL,数据存储在拼花格式(200GB)中

  • 当我使用spark API运行类似的代码时,它在许多不同的(分布式)作业中运行,并且成功运行。当我运行它时,我的代码(应该做与Spark代码相同的事情),我得到一个堆栈溢出错误。知道为什么吗? 代码如下: 我相信我正在使用与spark相同的所有并行化工作,但它对我不起作用。任何关于使我的代码分发/帮助了解为什么在我的代码中发生内存溢出的建议都将是非常有帮助的

  • 我正在实施一个项目,其中MySql数据被导入到hdfs使用sqoop。它有将近30张桌子。我通过推断模式和注册为临时表来读取每个表作为数据帧。我做这件事有几个问题...1.假设df1到df10的表需要实现几个连接。在MySQL中,查询将是而不是使用是否有其他连接所有数据帧有效地基于条件...

  • 环境:Scala、spark、结构化流媒体、Kafka 我有一个来自Kafka流的DF,具有以下模式 DF: 我希望使用spark并行处理每一行,并使用 我需要从值列中提取值到它自己的数据框中进行处理。我有困难与Dataframe通用行对象... 是否有办法将每个执行器中的单行转换为自己的Dataframe(使用固定模式?)在固定的地点写字?有没有更好的方法来解决我的问题? 编辑澄清: DF im