Apache spark 单火花任务是否曾经是多线程的?

Apache spark 单火花任务是否曾经是多线程的?,apache-spark,databricks,Apache Spark,Databricks,我试图弄清楚是否有一个任务使用executor上所有可用的内核运行过?也就是说,如果一个阶段只包含一个任务,这是否意味着该任务是执行器上的单线程单核处理,或者该任务是否可以“隐藏”以多线程方式使用所有可用的核 我在Azure Databricks中的一个工作者(因此是一个执行者)上运行ETL作业,在管道的某个点上,单个作业创建一个阶段,该阶段运行单个任务来处理整个数据集。这项任务需要几分钟才能完成 我想了解单个任务是否可以使用并行运行函数的所有可用执行器内核?在本例中,我使用from_json函

我试图弄清楚是否有一个任务使用executor上所有可用的内核运行过?也就是说,如果一个阶段只包含一个任务,这是否意味着该任务是执行器上的单线程单核处理,或者该任务是否可以“隐藏”以多线程方式使用所有可用的核

我在Azure Databricks中的一个工作者(因此是一个执行者)上运行ETL作业,在管道的某个点上,单个作业创建一个阶段,该阶段运行单个任务来处理整个数据集。这项任务需要几分钟才能完成

我想了解单个任务是否可以使用并行运行函数的所有可用执行器内核?在本例中,我使用from_json函数反序列化json消息,并将它们保存为拼花文件。我担心这是在单个任务中进行的单线程过程

spark
    .read
    .table("input")
    .withColumn("Payload", from_json($"Payload", schema))
    .write
    .mode(SaveMode.Append)
    .saveAsTable("output")

如果您正在查看Spark UI,并且只看到一个任务,那么这肯定是单芯单线程的

例如,如果您先执行一个连接,然后执行一个传输信息,默认情况下您将看到类似于
200
任务的任何内容。这意味着
200
“线程”正在并行计算


如果你想检查执行者的数量,你可以点击
stages
选项卡,点击任何一个stage,你就会看到有多少执行者被使用。

可能的dup of查看接受的答案。我看到了答案。据我所知,spark.task.cpu和spark.cores.max实际上只是限制在驱动端创建的任务数量,它并不决定执行器上任务的行为。谢谢,我只有一个具有8个内核的执行器。如果一个阶段中只有一个任务,我可以确定所有工作都是由一个核心完成的。奇怪的是,任务输入的大小是5,7GB,我不明白所有的数据是如何在一个分区中结束的。在我运行管道的这一部分之前,必须尝试重新划分数据集。@完全正确!分区通常是一种探索的解决方案。我的理解是,除非你有200个执行者,否则它们可能不会都是并行计算的。@BlueSheepToken我想我也发现了这个问题,合并(1)可能会因为某种原因被推高,我还不明白@谢谢你通知我!我不知道这个特定的优化,但是是的,Spark做了一些下推谓词优化。如果你有计划,我可能会再挖一点:)