我正在阅读具有以下代码的CSV文件
df = spark_session.read.option('header','true').option('inferSchema','true').csv('path to csv')
上面的代码创建了两个作业,每个作业一个阶段。一个任务是读取头文件,第二个任务是推断模式。这是我能够理解的。读取模式的作业只有一个阶段,有多个任务。我不明白为什么只有一个阶段。
我的理解是,Spark需要合并单个任务推断的模式,才能得到最终的模式。此合并活动应该需要交换操作。
有没有人可以分享一下Spark是如何在没有交换操作的情况下,在单一阶段处理这种模式合并的?
1条答案
按热度按时间2jcobegt1#
交换。
表示在整个集群(执行器)中的数据移动。这是最昂贵的操作,如果分区数量更多,那么执行器之间的数据交换也会更多。
推断模式不是这样的,所以你看不到它。是的,它需要合并Defs,但这是内部操作,而不是数据移动。