diff --git hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHFileOutputFormat.java hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHFileOutputFormat.java index da376d8..9a1c380 100644 --- hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHFileOutputFormat.java +++ hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHFileOutputFormat.java @@ -161,6 +161,10 @@ public void close(boolean abort) throws IOException { if (srcDir.getName().equals(columnFamilyName)) { break; } + if (!srcDir.isDir()) { + throw new IOException("Iterative search couldn't find a directory named '" + + columnFamilyName + "' under " + outputdir); + } } for (FileStatus regionFile : fs.listStatus(srcDir, FileUtils.STAGING_DIR_PATH_FILTER)) { fs.rename( diff --git hbase-handler/src/test/queries/negative/generatehfiles_bad_family_path.q hbase-handler/src/test/queries/negative/generatehfiles_bad_family_path.q new file mode 100644 index 0000000..d3d0a42 --- /dev/null +++ hbase-handler/src/test/queries/negative/generatehfiles_bad_family_path.q @@ -0,0 +1,11 @@ +-- -*- mode:sql -*- + +DROP TABLE IF EXISTS hbase_bulk; + +CREATE TABLE hbase_bulk (key INT, value STRING) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,cf:string'); + +SET hive.hbase.generatehfiles = true; +SET hfile.family.path = /tmp/hbase_bulk/wrongcfname; +INSERT OVERWRITE TABLE hbase_bulk SELECT * FROM src CLUSTER BY key;