在读取CSV时,在DAG中没有交换操作,同时使用在PySpark中为TRUE的INFERSCHEMA

dsekswqp  于 2022-10-07  发布在  Spark
关注(0)|答案(1)|浏览(114)

我正在阅读具有以下代码的CSV文件

df = spark_session.read.option('header','true').option('inferSchema','true').csv('path to csv')

上面的代码创建了两个作业,每个作业一个阶段。一个任务是读取头文件,第二个任务是推断模式。这是我能够理解的。读取模式的作业只有一个阶段,有多个任务。我不明白为什么只有一个阶段。

我的理解是,Spark需要合并单个任务推断的模式,才能得到最终的模式。此合并活动应该需要交换操作。

有没有人可以分享一下Spark是如何在没有交换操作的情况下,在单一阶段处理这种模式合并的?

2jcobegt

2jcobegt1#

交换。

表示在整个集群(执行器)中的数据移动。这是最昂贵的操作,如果分区数量更多,那么执行器之间的数据交换也会更多。

推断模式不是这样的,所以你看不到它。是的,它需要合并Defs,但这是内部操作,而不是数据移动。

相关问题