【发布时间】:2018-04-09 19:41:59
【问题描述】:
我正在尝试将 spark 中的配置单元表读取为强类型 Dataset,并且我注意到分区没有被修剪,而不是对来自同一个配置单元表的数据帧执行 Spark SQL。
case class States(state: String, country: String)
val hiveDS = spark.table("db1.states").as[States]
//no partition pruning
hiveDS.groupByKey(x=>x.country).count().filter(x=>x._1 == "US")
states 是按国家/地区划分的,因此当我对上述数据集进行计数时,查询会扫描所有分区。但是,如果我这样阅读 -
val hiveDF = spark.table("db1.states")
//correct partition pruning
hiveDF.groupByKey("country").count().filter(x=>x._1 == "US")
分区被正确修剪。谁能解释为什么将表映射到案例类时会丢失分区信息?
【问题讨论】:
标签: scala apache-spark hive apache-spark-sql apache-spark-dataset