gpt4 book ai didi

linux - 从 MapReduce 调用系统命令

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:59 24 4
gpt4 key购买 nike

我想从我的 map 缩减程序中调用系统命令。我希望这个命令只运行一次,但似乎该命令无法识别。我的测试命令是: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);

我有两个问题

  1. 放置此代码的最佳位置在哪里,以便它只执行一次?

  2. 为什么我发出此命令的环境实际上并未运行该命令?

我在其他命令中也注意到了这一点。

当我发出 hadoop 命令时没有收到错误,但移动没有发生。如果我从 Linux 命令行运行相同的命令,它确实有效。

最佳答案

一些评论:

  1. hadoop dfs -mv 假定源和目标的文件系统是 hdfs,除非您在参数中给出架构(例如 file:///user/test/somefile1)。
  2. 如果您在 Hadoop 工具或 Job.configure 中运行此命令,那么为什么要生成一个单独的进程(您似乎忽略了其退出代码,因此不会出现错误),而您可以在 Java 中本地调用它,例如 srcPath.getFileSystem( cfg ).rename( srcPath, dstPath )

关于linux - 从 MapReduce 调用系统命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com