pyspark:spark.read.format(“csv”)与spark.read.csv的性能差异

use*_*124 4 csv pyspark

任何人都知道spark.read.format("csv") 与spark.read.csv 有什么区别?

有人说“spark.read.csv”是“spark.read.format(“csv”)”的别名,但我发现两者之间存在差异。我做了一个实验,使用新的 pyspark 会话执行下面的每个命令,以便没有缓存。

DF1 耗时 42 秒,而 DF2 仅耗时 10 秒。csv 文件有 60+ GB。

DF1 = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("hdfs://bda-ns/user/project/xxx.csv")

DF2 = spark.read.option("header", "true").csv("hdfs://bda-ns/user/project/xxx.csv")
Run Code Online (Sandbox Code Playgroud)

我之所以研究这个问题是因为我需要在过滤后对2个数据帧进行联合,然后写回hdfs,并且花了很长时间来写入(16小时后仍在写入......)

Duy*_*yen 7

基本上,当你调用其中之一时,它们是完全相同的。但在你的实现中是不同的

使用 DF1,您添加inferSchema选项,它会减慢该过程,这解释了为什么 DF1 比第二个花费更多时间

inferSchema:自动推断列类型。它需要对数据进行一次额外的传递,默认情况下为 false, 详细文档

  • @Gopesh它们完全相似,但是想象一下你想要根据逻辑加载不同的文件格式, ```spark.read.format("csv" if SOMETHING else "ORC").load("path")```,它比使用 if else 的 ```spark.read.csv("path")``` 更具可读性 (4认同)