diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java index 1ec5774178..cd781be395 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java @@ -43,6 +43,7 @@ import org.apache.hadoop.hive.ql.hooks.WriteEntity; import org.apache.hadoop.hive.ql.io.AcidUtils; import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat; +import org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.Partition; @@ -390,7 +391,10 @@ private String extractTableFullName(StatsTask tsk) throws SemanticException { // Note: this should probably use BasicStatsNoJobTask.canUseFooterScan, but it doesn't check // Parquet for some reason. I'm keeping the existing behavior for now. - if (inputFormat.equals(OrcInputFormat.class) && !AcidUtils.isTransactionalTable(table)) { + // BasicStatsNoJobTask.canUseFooterScan uses !AcidUtils.isFullAcidTable(table)) + // instead of !AcidUtils.isTransactionalTable(table), so I'm also keeping the existing behavior for now. + if ((inputFormat.equals(OrcInputFormat.class) && !AcidUtils.isTransactionalTable(table)) + || MapredParquetInputFormat.class.isAssignableFrom(inputFormat)) { // For ORC, there is no Tez Job for table stats. StatsWork columnStatsWork = new StatsWork(table, parseContext.getConf()); columnStatsWork.setFooterScan();