Scala Spark:读取表并按分区过滤
我想了解Spark的评价 有一个表table_name,它由partition_列进行分区。它是一个以拼花形式存储的外部桌子。 现在,考虑下面的行Scala Spark:读取表并按分区过滤,scala,apache-spark,Scala,Apache Spark,我想了解Spark的评价 有一个表table_name,它由partition_列进行分区。它是一个以拼花形式存储的外部桌子。 现在,考虑下面的行 val df = spark.read.table(table_name).filter(partition_column=partition_value) 由于Spark的惰性计算,它是否将应用谓词下推并仅扫描分区\列=分区\值的文件夹?或者它将读取整个表格并稍后过滤掉?尝试。解释以查看结果 但是拼花地板确实被压下了 变换、过滤器、映射等都融合在
val df = spark.read.table(table_name).filter(partition_column=partition_value)
由于Spark的惰性计算,它是否将应用谓词下推并仅扫描分区\列=分区\值的文件夹?或者它将读取整个表格并稍后过滤掉?尝试。解释以查看结果 但是拼花地板确实被压下了 变换、过滤器、映射等都融合在一起。懒惰的一面确实是正确的,尽管你在一句话中就做到了
所以,答案是肯定的,Spark将生成代码以在源代码处进行过滤 为了给答案添加细节,如果您有一些列,您需要将所有
partition\u column
列包含到filter
谓词中。请参见列筛选器的限制