【发布时间】:2019-12-11 21:13:21
【问题描述】:
我有以下场景:
case class A(name:String,age:Int)
val df = List(A("s",2)).toDF
df.write.parquet("filePath")
val result = spark.read.parquet("filePath").as[A].select("age")
上述优化是否仅选择 age ?看到result.explain我看到以下内容
'Project [unresolvedalias('age, None)]
+- Relation[name#48,age#49] parquet
== Analyzed Logical Plan ==
age: int
Project [age#49]
+- Relation[name#48,age#49] parquet
== Optimized Logical Plan ==
Project [age#49]
+- Relation[name#48,age#49] parquet
== Physical Plan ==
*(1) FileScan parquet [age#49] Batched: true, Format: Parquet, Location: InMemoryFileIndex[file:/Volumes/Unix/workplace/Reconciliation/src/TFSReconciliationCore/~/Downloa..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<age:int>
似乎只读取了age。但是,as 的作用是什么?我在阅读物理计划时是否正确?
【问题讨论】:
标签: dataframe apache-spark apache-spark-sql parquet catalyst-optimizer