我想从我的map reduce程序中调用一个系统命令。我希望这个命令只运行一次,但好像命令无法识别。我的测试命令是:
hadoop dfs -mv /user/test/somefile1 /user/test/somefile2
我使用以下命令发出命令:
String envp[] = new String[1];
envp[0] = "Path=" + System.getProperty("java.library.path");
Process p = Runtime.getRuntime().exec("hadoop fs -mv /user/test/somefile1 /user/test/somefile2", envp);
我有两个问题,
放置此代码的最佳位置在哪里,只执行一次?
为什么我发出此命令的环境实际上并没有运行命令?
我也注意到了其他命令。
当我发出hadoop命令时,我没有收到错误,但是移动没有发生。如果我从linux命令行运行相同的命令,它确实有效。
答案 0 :(得分:0)
一些意见:
hadoop dfs -mv
假定源和目标的文件系统是hdfs,除非你在参数中给出了schemata(例如,file:///user/test/somefile1
)。srcPath.getFileSystem( cfg ).rename( srcPath, dstPath )
?