【问题标题】:Hadoop fs command working on the command line but not in shell scriptHadoop fs 命令在命令行上工作,但不在 shell 脚本中
【发布时间】:2025-03-30 04:15:02
【问题描述】:

我有一个包含以下命令的 bash shell 脚本:

hadoop fs -get ${WORKING_DIRECTORY}${OUTPUT_FILE}

解析为

hadoop fs -get /tmp/out.csv

当我运行 shell 脚本时,这个命令没有输出,文件也没有传输到本地实例。但是,如果我直接在 shell 上运行命令hadoop fs -get /tmp/out.csv,它就可以工作。

我错过了什么?

【问题讨论】:

  • 你使用了错误的印记%,插入$
  • 抱歉,打错了。我实际上正在使用$
  • 您确定环境变量可用吗?尝试echo脚本上的那些。
  • @HenryHarutyunyan 我很肯定。它们仅在上面几行定义,并通过echos 确认
  • @Cam mmhm 路径是否正确?可能是斜线的问题。此外,该脚本是否对该 csv 文件具有适当的访问权限?

标签: bash shell hadoop hdfs


【解决方案1】:

问题可能在于您的脚本没有看到环境变量(例如 HADOOP_CONF),并且使用本地文件系统而不是 HDFS。

确保.bashrc.bash_profile 设置正确。

您还应该将set -x2 放在脚本顶部,以确保变量按照您认为的方式解析。

至少在调试时最好在strict mode1 中运行您的脚本,这将为您节省大量时间。

【讨论】: