为什么 spark.read.parquet() 运行 2 个作业?
Why spark.read.parquet() runs 2 jobs?
我有一个镶木地板文件,名为 test.parquet
。它包含一些整数。当我使用以下代码阅读它时:
val df = spark.read.parquet("test.parquet")
df.show(false)
+---+
|id |
+---+
|11 |
|12 |
|13 |
|14 |
|15 |
|16 |
|17 |
|18 |
|19 |
+---+
在日志中,它显示了 2 个已执行的作业。它们如下:
一个是 parquet
工作,另一个是 show
工作。然而,当我使用以下代码读取镶木地板文件时:
val df = spark.read.schema(StructType(List(StructField("id",LongType,false)))).parquet("test.parquet")
df.show(false)
+---+
|id |
+---+
|11 |
|12 |
|13 |
|14 |
|15 |
|16 |
|17 |
|18 |
|19 |
+---+
只执行了一个作业,即show
:
那么,我的问题是:
- 为什么第一种方法执行 2 个作业而第二种方法只执行一个作业?
- 而且,为什么第二种方法比第一种方法快?
Spark 读取文件两次。
1- 发展模式
2- 创建数据框
生成模式后,将快速创建数据帧。
我有一个镶木地板文件,名为 test.parquet
。它包含一些整数。当我使用以下代码阅读它时:
val df = spark.read.parquet("test.parquet")
df.show(false)
+---+
|id |
+---+
|11 |
|12 |
|13 |
|14 |
|15 |
|16 |
|17 |
|18 |
|19 |
+---+
在日志中,它显示了 2 个已执行的作业。它们如下:
一个是 parquet
工作,另一个是 show
工作。然而,当我使用以下代码读取镶木地板文件时:
val df = spark.read.schema(StructType(List(StructField("id",LongType,false)))).parquet("test.parquet")
df.show(false)
+---+
|id |
+---+
|11 |
|12 |
|13 |
|14 |
|15 |
|16 |
|17 |
|18 |
|19 |
+---+
只执行了一个作业,即show
:
那么,我的问题是:
- 为什么第一种方法执行 2 个作业而第二种方法只执行一个作业?
- 而且,为什么第二种方法比第一种方法快?
Spark 读取文件两次。 1- 发展模式 2- 创建数据框
生成模式后,将快速创建数据帧。