①HIVE-1612に掲示されたパッチを対応するtrunkソースに当てる。
②よしもふさんのページを参考にql/exec/Utilities.javaのgetMapRedWorkメソッドを修正(多少本体側も変更されているので以下参考)。
public static MapredWork getMapRedWork (Configuration job) {
MapredWork gWork = null;
try {
synchronized(gWorkMap) {
gWork = gWorkMap.get(getHiveJobID(job));
}
if(gWork == null) {
synchronized (Utilities.class) {
if(gWork != null)
return (gWork);
Path planPath = new Path(HiveConf.getVar(job, HiveConf.ConfVars.PLAN));
FileSystem fs = planPath.getFileSystem(job);
InputStream in = fs.open(planPath);
MapredWork ret = deserializeMapRedWork(in, job);
gWork = ret;
gWork.initialize();
gWorkMap.put(getHiveJobID(job), gWork);
}
}
return (gWork);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException (e);
}
}
③ql/Context.javaのgetLocalScratchDirメソッドを修正(以下ひどい修正なので参考までに)。
public String getLocalScratchDir(boolean mkdir) {
try {
FileSystem fs = FileSystem.getLocal(conf);
URI uri = fs.getUri();
return "/tmp";
/*
return getScratchDir(uri.getScheme(), uri.getAuthority(),
mkdir, localScratchDir);
*/
} catch (IOException e) {
throw new RuntimeException (e);
}
}