Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
===================================================================
--- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 911664)
+++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy)
@@ -147,6 +147,7 @@
// Default file format for CREATE TABLE statement
// Options: TextFile, SequenceFile
HIVEDEFAULTFILEFORMAT("hive.default.fileformat", "TextFile"),
+ HIVECHECKFILEFORMAT("hive.fileformat.check", true),
//Location of Hive run time structured log file
HIVEHISTORYFILELOC("hive.querylog.location", "/tmp/" + System.getProperty("user.name")),
Index: conf/hive-default.xml
===================================================================
--- conf/hive-default.xml (revision 911664)
+++ conf/hive-default.xml (working copy)
@@ -199,6 +199,12 @@
+ hive.fileformat.check
+ true
+ Whether to check file format or not when loading data files
+
+
+
hive.map.aggr
true
Whether to use map-side aggregation in Hive Group By queries
Index: ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java
===================================================================
--- ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java (revision 910755)
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/MoveTask.java (working copy)
@@ -28,6 +28,7 @@
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocalFileSystem;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.MetaStoreUtils;
import org.apache.hadoop.hive.ql.hooks.WriteEntity;
import org.apache.hadoop.hive.ql.io.HiveFileFormatUtils;
@@ -140,13 +141,13 @@
throw new HiveException(
"addFiles: filesystem error in check phase", e);
}
-
- // Check if the file format of the file matches that of the table.
- boolean flag = HiveFileFormatUtils.checkInputFormat(fs, conf, tbd
- .getTable().getInputFileFormatClass(), files);
- if (!flag) {
- throw new HiveException(
- "Wrong file format. Please check the file's format.");
+ if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVECHECKFILEFORMAT)) {
+ // Check if the file format of the file matches that of the table.
+ boolean flag = HiveFileFormatUtils.checkInputFormat(fs, conf, tbd.getTable().getInputFileFormatClass(), files);
+ if (!flag) {
+ throw new HiveException(
+ "Wrong file format. Please check the file's format.");
+ }
}
}
Index: ql/src/test/queries/clientpositive/disable_file_format_check.q
===================================================================
--- ql/src/test/queries/clientpositive/disable_file_format_check.q (revision 0)
+++ ql/src/test/queries/clientpositive/disable_file_format_check.q (revision 0)
@@ -0,0 +1,9 @@
+set hive.fileformat.check = false;
+create table kv_fileformat_check_txt (key string, value string) stored as textfile;
+load data local inpath '../data/files/kv1.seq' overwrite into table kv_fileformat_check_txt;
+
+create table kv_fileformat_check_seq (key string, value string) stored as sequencefile;
+load data local inpath '../data/files/kv1.txt' overwrite into table kv_fileformat_check_seq;
+
+drop table kv_fileformat_check_seq;
+drop table kv_fileformat_check_txt;
Index: ql/src/test/results/clientpositive/disable_file_format_check.q.out
===================================================================
--- ql/src/test/results/clientpositive/disable_file_format_check.q.out (revision 0)
+++ ql/src/test/results/clientpositive/disable_file_format_check.q.out (revision 0)
@@ -0,0 +1,30 @@
+PREHOOK: query: create table kv_fileformat_check_txt (key string, value string) stored as textfile
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: create table kv_fileformat_check_txt (key string, value string) stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@kv_fileformat_check_txt
+PREHOOK: query: load data local inpath '../data/files/kv1.seq' overwrite into table kv_fileformat_check_txt
+PREHOOK: type: LOAD
+POSTHOOK: query: load data local inpath '../data/files/kv1.seq' overwrite into table kv_fileformat_check_txt
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@kv_fileformat_check_txt
+PREHOOK: query: create table kv_fileformat_check_seq (key string, value string) stored as sequencefile
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: create table kv_fileformat_check_seq (key string, value string) stored as sequencefile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@kv_fileformat_check_seq
+PREHOOK: query: load data local inpath '../data/files/kv1.txt' overwrite into table kv_fileformat_check_seq
+PREHOOK: type: LOAD
+POSTHOOK: query: load data local inpath '../data/files/kv1.txt' overwrite into table kv_fileformat_check_seq
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@kv_fileformat_check_seq
+PREHOOK: query: drop table kv_fileformat_check_seq
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table kv_fileformat_check_seq
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Output: default@kv_fileformat_check_seq
+PREHOOK: query: drop table kv_fileformat_check_txt
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table kv_fileformat_check_txt
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Output: default@kv_fileformat_check_txt