Details
Description
One of our users has observed below error when our cluster upgrades from 0.98.12 to 1.1.2:
java.lang.IllegalArgumentException: Can not create a Path from a null string at org.apache.hadoop.fs.Path.checkPathArg(Path.java:122) at org.apache.hadoop.fs.Path.<init>(Path.java:134) at org.apache.hadoop.fs.Path.<init>(Path.java:88) at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configurePartitioner(HFileOutputFormat2.java:639) at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:489)
And checking the application code:
private Job createJob(Configuration jobConf) throws IOException { String tableName = jobConf.get(TABLE_NAME_KEY); Job job = new Job(jobConf); Configuration tableConf = HBaseConfiguration.create(); HTable table = new HTable(tableConf, tableName); HFileOutputFormat2.configureIncrementalLoad(job, table); return job; }
We could see the user has his own hbase-independent job configuration, so our current code in HFileOutputFormat2:
Path partitionsPath = new Path(conf.get("hbase.fs.tmp.dir"), "partitions_" + UUID.randomUUID());
will return a null string and cause the above exception.
We propose to add default value in the code rather than depend on hbase-default.xml in this JIRA.
This is an improvement for HBASE-13625