On my Windows system test fail as Context.getScratchDir fails:
java.io.IOException: Failed to set permissions of path:
\HW\project\hive-monarch\itests\qtest\target\tmp\scratchdir\hive_2013-11-28_16-20-53_995_395869757529987755-1
to 0700
at
org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:691)
at
org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:664)
at
org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:514)
at
org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:290)
at
org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:290)
at
org.apache.hadoop.fs.ProxyFileSystem.setPermission(ProxyFileSystem.java:290)
at
org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:290)
at
org.apache.hadoop.hive.ql.Context.getScratchDir(Context.java:212)
at
org.apache.hadoop.hive.ql.Context.getExternalScratchDir(Context.java:272)
at
org.apache.hadoop.hive.ql.Context.getExternalTmpFileURI(Context.java:365)
....
This seems related to the platform specific chmod, which on Windows relies on
winutils.exe
But I don't understand how does Hive testing decide what Hadoop shim to use.
The ShimLoader.getMajorVersion uses VersionInfo.getVersion() and in debugger I
can see this returns "1.2.1" and accordingly the -core-1.2.1 JARs are used,
from my Maven cache. This seems to ignore my current HADOOP_HOME and any
CLASSPATH I try to set. The loaded JARs are not working properly on Windows and
that causes my problems.
How can I control, when I run mvn test, what shims are being used?
Thanks,
~Remus