diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java index e53933e..7b28216 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java @@ -670,6 +670,13 @@ public boolean isPartitioned() { return (getPartCols().size() != 0); } + public boolean isBucketized() { + if (getBucketCols() == null) { + return false; + } + return (getPartCols().size() != 0); + } + public void setFields(List fields) { tTable.getSd().setCols(fields); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java index 1a9b42b..c523412 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java @@ -38,6 +38,7 @@ import org.apache.hadoop.hive.ql.plan.LoadTableDesc; import org.apache.hadoop.hive.ql.plan.MoveWork; import org.apache.hadoop.hive.ql.plan.StatsWork; +import org.apache.hadoop.hive.ql.session.SessionState; import java.io.IOException; import java.io.Serializable; @@ -216,6 +217,15 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { if(ts.tableHandle.isStoredAsSubDirectories()) { throw new SemanticException(ErrorMsg.LOAD_INTO_STORED_AS_DIR.getMsg()); } + + if (ts.tableHandle.isBucketized()) { + SessionState + .getConsole() + .getInfoStream() + .println( + String.format("Warning: load data into a bucketized table %s", + ts.tableHandle.getTableName())); + } URI toURI = ((ts.partHandle != null) ? ts.partHandle.getDataLocation() : ts.tableHandle.getDataLocation()).toUri(); diff --git a/ql/src/test/results/clientpositive/tez/tez_smb_1.q.out b/ql/src/test/results/clientpositive/tez/tez_smb_1.q.out index d970bd9..267af00 100644 --- a/ql/src/test/results/clientpositive/tez/tez_smb_1.q.out +++ b/ql/src/test/results/clientpositive/tez/tez_smb_1.q.out @@ -22,6 +22,7 @@ POSTHOOK: query: CREATE TABLE srcbucket_mapjoin_part (key int, value string) par POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@srcbucket_mapjoin_part +Warning: load data into a bucketized table srcbucket_mapjoin PREHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -31,6 +32,7 @@ POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin PREHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -39,6 +41,7 @@ POSTHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -48,6 +51,7 @@ POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin_part POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -56,6 +60,7 @@ POSTHOOK: query: load data local inpath '../../data/files/srcbucket21.txt' INTO POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -64,6 +69,7 @@ POSTHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/tez/tez_smb_main.q.out b/ql/src/test/results/clientpositive/tez/tez_smb_main.q.out index 6183390..de6065a 100644 --- a/ql/src/test/results/clientpositive/tez/tez_smb_main.q.out +++ b/ql/src/test/results/clientpositive/tez/tez_smb_main.q.out @@ -146,6 +146,7 @@ POSTHOOK: query: CREATE TABLE srcbucket_mapjoin_part (key int, value string) par POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@srcbucket_mapjoin_part +Warning: load data into a bucketized table srcbucket_mapjoin PREHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -155,6 +156,7 @@ POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin PREHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -163,6 +165,7 @@ POSTHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -172,6 +175,7 @@ POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin_part POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -180,6 +184,7 @@ POSTHOOK: query: load data local inpath '../../data/files/srcbucket21.txt' INTO POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here #### @@ -188,6 +193,7 @@ POSTHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08 +Warning: load data into a bucketized table srcbucket_mapjoin_part PREHOOK: query: load data local inpath '../../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08') PREHOOK: type: LOAD #### A masked pattern was here ####