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