私は少なくとも1つの使用法を知っていますが、これはWindows OS上でシェルコマンドを実行するためのものです。とりわけ
static final String WINUTILS_EXE = "winutils.exe";
...
static {
IOException ioe = null;
String path = null;
File file = null;
// invariant: either there's a valid file and path,
// or there is a cached IO exception.
if (WINDOWS) {
try {
file = getQualifiedBin(WINUTILS_EXE);
path = file.getCanonicalPath();
ioe = null;
} catch (IOException e) {
LOG.warn("Did not find {}: {}", WINUTILS_EXE, e);
// stack trace comes at debug level
LOG.debug("Failed to find " + WINUTILS_EXE, e);
file = null;
path = null;
ioe = e;
}
} else {
// on a non-windows system, the invariant is kept
// by adding an explicit exception.
ioe = new FileNotFoundException(E_NOT_A_WINDOWS_SYSTEM);
}
WINUTILS_PATH = path;
WINUTILS_FILE = file;
WINUTILS = path;
WINUTILS_FAILURE = ioe;
}
...
public static String getWinUtilsPath() {
if (WINUTILS_FAILURE == null) {
return WINUTILS_PATH;
} else {
throw new RuntimeException(WINUTILS_FAILURE.toString(),
WINUTILS_FAILURE);
}
}
...
public static String[] getGetPermissionCommand() {
return (WINDOWS) ? new String[] { getWinUtilsPath(), "ls", "-F" }
: new String[] { "/bin/ls", "-ld" };
}
、スパークは、Hadoopのを使用していますように、ファイルを作成するためにchmodなどのUNIXコマンドを呼び出すようだと:あなたは、他のモジュールは、このクラスに依存し、それは例えば方法、だ
getGetPermissionCommand()
方法を使用して、org.apache.hadoop.util.Shell
でそれを見つけることができますディレクトリ。 – RdesmondHadoopディストリビューションを取得した場合、Sparkを完全に実行することはできません。 winutilsを使わないでファイルを読み書きすることはできません。 –
はい、SparkはHadoop上に構築されているため、いくつかのコンポーネントを使用することは理にかなっています。また、winutils.exeなしでは特定の操作を行うことはできません。質問は主にwinutils.exeの内容に関するものでしたか?それはどのような目的を持っていますか? –