Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java =================================================================== --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 911060) +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy) @@ -141,6 +141,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 911563) +++ 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 903370) +++ 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; @@ -129,10 +130,14 @@ 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."); + } + } } if(tbd.getPartitionSpec().size() == 0) { 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