You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by px...@apache.org on 2016/06/23 17:25:36 UTC
hive git commit: HIVE-14028: Insert overwrite does not work in HBase
tables: stats is not updated(Pengcheng Xiong, reviewed by Ashutosh Chauhan)
Repository: hive
Updated Branches:
refs/heads/master 5b82e5e9f -> 3bc615f82
HIVE-14028: Insert overwrite does not work in HBase tables: stats is not updated(Pengcheng Xiong, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3bc615f8
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3bc615f8
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3bc615f8
Branch: refs/heads/master
Commit: 3bc615f827e0246b3ae4ab70d0fb8b360aa25424
Parents: 5b82e5e
Author: Pengcheng Xiong <px...@apache.org>
Authored: Thu Jun 23 10:25:11 2016 -0700
Committer: Pengcheng Xiong <px...@apache.org>
Committed: Thu Jun 23 10:25:11 2016 -0700
----------------------------------------------------------------------
.../src/test/queries/positive/hbasestats.q | 44 +++
.../test/results/positive/hbase_queries.q.out | 26 +-
.../hbase_single_sourced_multi_insert.q.out | 39 +-
.../src/test/results/positive/hbasestats.q.out | 389 +++++++++++++++++++
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 22 +-
5 files changed, 500 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/3bc615f8/hbase-handler/src/test/queries/positive/hbasestats.q
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/queries/positive/hbasestats.q b/hbase-handler/src/test/queries/positive/hbasestats.q
new file mode 100644
index 0000000..52e11c9
--- /dev/null
+++ b/hbase-handler/src/test/queries/positive/hbasestats.q
@@ -0,0 +1,44 @@
+DROP TABLE users;
+
+CREATE TABLE users(key string, state string, country string, country_id int)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES (
+"hbase.columns.mapping" = "info:state,info:country,info:country_id"
+);
+
+desc formatted users;
+
+explain INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src;
+
+INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src;
+
+desc formatted users;
+
+select count(*) from users;
+
+set hive.compute.query.using.stats=true;
+
+select count(*) from users;
+
+INSERT into TABLE users SELECT 'user2', 'IA', 'USA', 0 FROM src;
+
+desc formatted users;
+
+select count(*) from users;
+
+analyze table users compute statistics;
+
+desc formatted users;
+
+explain select count(*) from users;
+
+select count(*) from users;
+
+INSERT into TABLE users SELECT 'user3', 'IA', 'USA', 0 FROM src;
+
+desc formatted users;
+
+explain select count(*) from users;
+
+select count(*) from users;
+
http://git-wip-us.apache.org/repos/asf/hive/blob/3bc615f8/hbase-handler/src/test/results/positive/hbase_queries.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbase_queries.q.out b/hbase-handler/src/test/results/positive/hbase_queries.q.out
index a99f561..d5c1cfa 100644
--- a/hbase-handler/src/test/results/positive/hbase_queries.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_queries.q.out
@@ -40,9 +40,18 @@ POSTHOOK: query: EXPLAIN FROM src INSERT OVERWRITE TABLE hbase_table_1 SELECT *
POSTHOOK: type: QUERY
STAGE DEPENDENCIES:
Stage-0 is a root stage
+ Stage-1 is a root stage
STAGE PLANS:
Stage: Stage-0
+ Alter Table Operator:
+ Alter Table
+ type: drop props
+ old name: default.hbase_table_1
+ properties:
+ COLUMN_STATS_ACCURATE
+
+ Stage: Stage-1
Map Reduce
Map Operator Tree:
TableScan
@@ -483,11 +492,20 @@ JOIN
ON (x.key = Y.key)
POSTHOOK: type: QUERY
STAGE DEPENDENCIES:
- Stage-1 is a root stage
- Stage-0 depends on stages: Stage-1
+ Stage-0 is a root stage
+ Stage-2 is a root stage
+ Stage-1 depends on stages: Stage-2
STAGE PLANS:
- Stage: Stage-1
+ Stage: Stage-0
+ Alter Table Operator:
+ Alter Table
+ type: drop props
+ old name: default.hbase_table_3
+ properties:
+ COLUMN_STATS_ACCURATE
+
+ Stage: Stage-2
Map Reduce
Map Operator Tree:
TableScan
@@ -522,7 +540,7 @@ STAGE PLANS:
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
- Stage: Stage-0
+ Stage: Stage-1
Map Reduce
Map Operator Tree:
TableScan
http://git-wip-us.apache.org/repos/asf/hive/blob/3bc615f8/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out b/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
index 38c51b5..e487a0b 100644
--- a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
@@ -35,17 +35,26 @@ insert overwrite table src_x2
select value,"" where a.key > 50 AND a.key < 100
POSTHOOK: type: QUERY
STAGE DEPENDENCIES:
- Stage-1 is a root stage
- Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5
- Stage-4
- Stage-0 depends on stages: Stage-4, Stage-3, Stage-6
- Stage-2 depends on stages: Stage-0
- Stage-3
+ Stage-0 is a root stage
+ Stage-2 is a root stage
+ Stage-8 depends on stages: Stage-2 , consists of Stage-5, Stage-4, Stage-6
Stage-5
- Stage-6 depends on stages: Stage-5
+ Stage-1 depends on stages: Stage-5, Stage-4, Stage-7
+ Stage-3 depends on stages: Stage-1
+ Stage-4
+ Stage-6
+ Stage-7 depends on stages: Stage-6
STAGE PLANS:
- Stage: Stage-1
+ Stage: Stage-0
+ Alter Table Operator:
+ Alter Table
+ type: drop props
+ old name: default.src_x2
+ properties:
+ COLUMN_STATS_ACCURATE
+
+ Stage: Stage-2
Map Reduce
Map Operator Tree:
TableScan
@@ -82,16 +91,16 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.hbase.HBaseSerDe
name: default.src_x2
- Stage: Stage-7
+ Stage: Stage-8
Conditional Operator
- Stage: Stage-4
+ Stage: Stage-5
Move Operator
files:
hdfs directory: true
#### A masked pattern was here ####
- Stage: Stage-0
+ Stage: Stage-1
Move Operator
tables:
replace: true
@@ -101,10 +110,10 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
name: default.src_x1
- Stage: Stage-2
+ Stage: Stage-3
Stats-Aggr Operator
- Stage: Stage-3
+ Stage: Stage-4
Map Reduce
Map Operator Tree:
TableScan
@@ -116,7 +125,7 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
name: default.src_x1
- Stage: Stage-5
+ Stage: Stage-6
Map Reduce
Map Operator Tree:
TableScan
@@ -128,7 +137,7 @@ STAGE PLANS:
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
name: default.src_x1
- Stage: Stage-6
+ Stage: Stage-7
Move Operator
files:
hdfs directory: true
http://git-wip-us.apache.org/repos/asf/hive/blob/3bc615f8/hbase-handler/src/test/results/positive/hbasestats.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbasestats.q.out b/hbase-handler/src/test/results/positive/hbasestats.q.out
new file mode 100644
index 0000000..cf4138e
--- /dev/null
+++ b/hbase-handler/src/test/results/positive/hbasestats.q.out
@@ -0,0 +1,389 @@
+PREHOOK: query: DROP TABLE users
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE users
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE users(key string, state string, country string, country_id int)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES (
+"hbase.columns.mapping" = "info:state,info:country,info:country_id"
+)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@users
+POSTHOOK: query: CREATE TABLE users(key string, state string, country string, country_id int)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES (
+"hbase.columns.mapping" = "info:state,info:country,info:country_id"
+)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@users
+PREHOOK: query: desc formatted users
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@users
+POSTHOOK: query: desc formatted users
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@users
+# col_name data_type comment
+
+key string
+state string
+country string
+country_id int
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+ numFiles 0
+ numRows 0
+ rawDataSize 0
+ storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler
+ totalSize 0
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe
+InputFormat: null
+OutputFormat: null
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ hbase.columns.mapping info:state,info:country,info:country_id
+ serialization.format 1
+PREHOOK: query: explain INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src
+PREHOOK: type: QUERY
+POSTHOOK: query: explain INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
+ Stage-1 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-0
+ Alter Table Operator:
+ Alter Table
+ type: drop props
+ old name: default.users
+ properties:
+ COLUMN_STATS_ACCURATE
+
+ Stage: Stage-1
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: src
+ Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: 'user1' (type: string), 'IA' (type: string), 'USA' (type: string), 0 (type: int)
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Statistics: Num rows: 500 Data size: 133000 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 500 Data size: 133000 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat
+ output format: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat
+ serde: org.apache.hadoop.hive.hbase.HBaseSerDe
+ name: default.users
+
+PREHOOK: query: INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@users
+POSTHOOK: query: INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@users
+PREHOOK: query: desc formatted users
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@users
+POSTHOOK: query: desc formatted users
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@users
+# col_name data_type comment
+
+key string
+state string
+country string
+country_id int
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 0
+ numRows 0
+ rawDataSize 0
+ storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler
+ totalSize 0
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe
+InputFormat: null
+OutputFormat: null
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ hbase.columns.mapping info:state,info:country,info:country_id
+ serialization.format 1
+PREHOOK: query: select count(*) from users
+PREHOOK: type: QUERY
+PREHOOK: Input: default@users
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from users
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@users
+#### A masked pattern was here ####
+1
+PREHOOK: query: select count(*) from users
+PREHOOK: type: QUERY
+PREHOOK: Input: default@users
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from users
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@users
+#### A masked pattern was here ####
+1
+PREHOOK: query: INSERT into TABLE users SELECT 'user2', 'IA', 'USA', 0 FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@users
+POSTHOOK: query: INSERT into TABLE users SELECT 'user2', 'IA', 'USA', 0 FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@users
+PREHOOK: query: desc formatted users
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@users
+POSTHOOK: query: desc formatted users
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@users
+# col_name data_type comment
+
+key string
+state string
+country string
+country_id int
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 0
+ numRows 0
+ rawDataSize 0
+ storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler
+ totalSize 0
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe
+InputFormat: null
+OutputFormat: null
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ hbase.columns.mapping info:state,info:country,info:country_id
+ serialization.format 1
+PREHOOK: query: select count(*) from users
+PREHOOK: type: QUERY
+PREHOOK: Input: default@users
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from users
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@users
+#### A masked pattern was here ####
+2
+PREHOOK: query: analyze table users compute statistics
+PREHOOK: type: QUERY
+PREHOOK: Input: default@users
+PREHOOK: Output: default@users
+POSTHOOK: query: analyze table users compute statistics
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@users
+POSTHOOK: Output: default@users
+PREHOOK: query: desc formatted users
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@users
+POSTHOOK: query: desc formatted users
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@users
+# col_name data_type comment
+
+key string
+state string
+country string
+country_id int
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"}
+#### A masked pattern was here ####
+ numFiles 0
+ numRows 2
+ rawDataSize 0
+ storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler
+ totalSize 0
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe
+InputFormat: null
+OutputFormat: null
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ hbase.columns.mapping info:state,info:country,info:country_id
+ serialization.format 1
+PREHOOK: query: explain select count(*) from users
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select count(*) from users
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: 1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from users
+PREHOOK: type: QUERY
+PREHOOK: Input: default@users
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from users
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@users
+#### A masked pattern was here ####
+2
+PREHOOK: query: INSERT into TABLE users SELECT 'user3', 'IA', 'USA', 0 FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@users
+POSTHOOK: query: INSERT into TABLE users SELECT 'user3', 'IA', 'USA', 0 FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@users
+PREHOOK: query: desc formatted users
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@users
+POSTHOOK: query: desc formatted users
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@users
+# col_name data_type comment
+
+key string
+state string
+country string
+country_id int
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 0
+ numRows 2
+ rawDataSize 0
+ storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler
+ totalSize 0
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe
+InputFormat: null
+OutputFormat: null
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ hbase.columns.mapping info:state,info:country,info:country_id
+ serialization.format 1
+PREHOOK: query: explain select count(*) from users
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select count(*) from users
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: users
+ Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
+ Select Operator
+ Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
+ Group By Operator
+ aggregations: count()
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: bigint)
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: select count(*) from users
+PREHOOK: type: QUERY
+PREHOOK: Input: default@users
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from users
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@users
+#### A masked pattern was here ####
+3
http://git-wip-us.apache.org/repos/asf/hive/blob/3bc615f8/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 53f3b05..bc8e9c0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -55,8 +55,10 @@ import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsAction;
+import org.apache.hadoop.hive.ql.plan.AlterTableDesc;
import org.apache.hadoop.hive.common.FileUtils;
import org.apache.hadoop.hive.common.ObjectPair;
+import org.apache.hadoop.hive.common.StatsSetupConst;
import org.apache.hadoop.hive.common.StatsSetupConst.StatDB;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
@@ -152,6 +154,7 @@ import org.apache.hadoop.hive.ql.parse.WindowingSpec.WindowFrameSpec;
import org.apache.hadoop.hive.ql.parse.WindowingSpec.WindowFunctionSpec;
import org.apache.hadoop.hive.ql.parse.WindowingSpec.WindowSpec;
import org.apache.hadoop.hive.ql.plan.AggregationDesc;
+import org.apache.hadoop.hive.ql.plan.AlterTableDesc.AlterTableTypes;
import org.apache.hadoop.hive.ql.plan.CreateTableDesc;
import org.apache.hadoop.hive.ql.plan.CreateTableLikeDesc;
import org.apache.hadoop.hive.ql.plan.CreateViewDesc;
@@ -6520,6 +6523,19 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
}
}
+ @SuppressWarnings("unchecked")
+ private void setStatsForNonNativeTable(Table tab) throws SemanticException {
+ String tableName = DDLSemanticAnalyzer.getDotName(new String[] { tab.getDbName(),
+ tab.getTableName() });
+ AlterTableDesc alterTblDesc = new AlterTableDesc(AlterTableTypes.DROPPROPS, null, false);
+ HashMap<String, String> mapProp = new HashMap<>();
+ mapProp.put(StatsSetupConst.COLUMN_STATS_ACCURATE, null);
+ alterTblDesc.setOldName(tableName);
+ alterTblDesc.setProps(mapProp);
+ alterTblDesc.setDropIfExists(true);
+ this.rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc), conf));
+ }
+
@SuppressWarnings("nls")
protected Operator genFileSinkPlan(String dest, QB qb, Operator input)
throws SemanticException {
@@ -6642,11 +6658,15 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
acidOp = getAcidType(table_desc.getOutputFileFormatClass());
checkAcidConstraints(qb, table_desc, dest_tab);
}
- ltd = new LoadTableDesc(queryTmpdir,table_desc, dpCtx, acidOp);
+ ltd = new LoadTableDesc(queryTmpdir, table_desc, dpCtx, acidOp);
ltd.setReplace(!qb.getParseInfo().isInsertIntoTable(dest_tab.getDbName(),
dest_tab.getTableName()));
ltd.setLbCtx(lbCtx);
loadTableWork.add(ltd);
+ } else {
+ // This is a non-native table.
+ // We need to set stats as inaccurate.
+ setStatsForNonNativeTable(dest_tab);
}
WriteEntity output = null;