diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java index 46c24e3..b6d7ee8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java @@ -24,6 +24,7 @@ import java.util.Set; import java.util.Stack; +import org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.fs.Path; @@ -94,8 +95,9 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procContext, assert alias != null; TezWork tezWork = context.currentTask.getWork(); - if (inputFormat.equals(OrcInputFormat.class)) { - // For ORC, all the following statements are the same + if (OrcInputFormat.class.isAssignableFrom(inputFormat) || + MapredParquetInputFormat.class.isAssignableFrom(inputFormat)) { + // For ORC & Parquet, all the following statements are the same // ANALYZE TABLE T [PARTITION (...)] COMPUTE STATISTICS // ANALYZE TABLE T [PARTITION (...)] COMPUTE STATISTICS partialscan; // ANALYZE TABLE T [PARTITION (...)] COMPUTE STATISTICS noscan; diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java index 52186b4..52af3af 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java @@ -22,6 +22,7 @@ import java.util.Set; import java.util.Stack; +import org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.fs.Path; @@ -100,8 +101,8 @@ public Object process(Node nd, Stack stack, SparkWork sparkWork = context.currentTask.getWork(); boolean partialScan = parseContext.getQueryProperties().isPartialScanAnalyzeCommand(); boolean noScan = parseContext.getQueryProperties().isNoScanAnalyzeCommand(); - if (inputFormat.equals(OrcInputFormat.class) && (noScan || partialScan)) { - + if ((OrcInputFormat.class.isAssignableFrom(inputFormat) || + MapredParquetInputFormat.class.isAssignableFrom(inputFormat)) && (noScan || partialScan)) { // ANALYZE TABLE T [PARTITION (...)] COMPUTE STATISTICS partialscan; // ANALYZE TABLE T [PARTITION (...)] COMPUTE STATISTICS noscan; // There will not be any Spark job above this task