Apache spark Spark 1.6和计算统计数据

Apache spark Spark 1.6和计算统计数据,apache-spark,hive,impala,Apache Spark,Hive,Impala,当使用spark1.6中表的底层拼花文件时,计算统计信息是否仍然有用?例: hiveCtx.read.format("parquet") .load("/path/*.parquet").registerTempTable("TEST") 这取决于各种情况 无论您的表是分区的,如果它是分区的,那么您读取的是一个分区还是一种排序中的所有分区。 若您的表是分区的,那个么当Hive或Impala维护元数据时,最好从表中读取数据,并在spark中创建带有关联数据的dataframe

当使用spark1.6中表的底层拼花文件时,计算统计信息是否仍然有用?例:

 hiveCtx.read.format("parquet")
        .load("/path/*.parquet").registerTempTable("TEST") 

这取决于各种情况

无论您的表是分区的,如果它是分区的,那么您读取的是一个分区还是一种排序中的所有分区。 若您的表是分区的,那个么当Hive或Impala维护元数据时,最好从表中读取数据,并在spark中创建带有关联数据的dataframe,这样在spark DF上应用一些转换时,代码的性能会更好。 我可以看到你正在使用hiveContext来读取你的拼花地板文件,从性能上看,它只有很小的偏转,但总体上没有太大的差异。
感谢您的快速回复,是的,表是分区的,每次从临时表中读取一个分区。这样分区修剪工作正常。但仍然不确定底层统计信息是否有帮助。显然,这不是一个更好的开始方法,如果表是分区的,那么总是读取表,而不是从任何分区中读取单独的文件。您可以在创建df时使用lazy val,这将有助于不立即计算,而是在需要时进行计算。同意,如果这项工作正常,并且由于批处理的n个作业部分和批处理完成跨越指定的时间线,而不需要花费大量时间来计算统计数据,则希望避免计算统计数据。