Shell 导出 Hadoop 库类路径的脚本不起作用

Shell script exporting Hadoop library classpath does not working

我正在尝试开发 Python 客户端,它使用 pyarrow 包与 Hadoop 文件系统 3.3 交互。我的 OS 是 CentOS 8 而 IDE 是 Eclipse pydev。示例代码很简单

from pyarrow import fs 
hdfs = fs.HadoopFileSystem('localhost', 9000)

但成功的python代码运行ning必须执行先决条件命令。命令是

# export CLASSPATH=`$HADOOP_HOME/bin/hdfs classpath --glob`

每当我 运行 Eclipse IDE 时,我必须在 Eclipse 之前执行上面的 export CLASSPATH 命令。为了避免这种不便并使 IDE 配置自动化,我制作了 shell 脚本文件,如下所示,

#! /bin/bash

export CLASSPATH=$(/usr/local/hadoop/bin/hdfs classpath --glob)
echo $CLASSPATH

当我执行此脚本时,shell 脚本的输出消息是正确的。但是当我在下一行执行 Eclipse 时,上面的 pyarrow Python 代码无法成功运行。我不知道这次失败。

当我在 shell 本身上执行 export CLASSPATH 命令时,Eclipse 上的 Python 代码可以正常工作。但是当我执行 shell 脚本时,Eclipse Python 代码会抛出错误。

更新

我进入 [运行 配置] 菜单并选择 [环境] 选项卡。我单击 [添加] 并将以下值输入到 [新环境变量] 对话框中。

Name : CLASSPATH
Value : $(/usr/local/hadoop/bin/hdfs classpath --glob)

但是我的配置不对,还是报同样的错误

附上我的 IDE 配置图片。

如评论中所述,在eclipe的“运行配置”菜单中,您需要为调用的CLASSPATH.

添加en环境变量条目

当您 运行 此命令时,该值必须是 shell returns 的值:

 /usr/local/hadoop/bin/hdfs classpath --glob

不要尝试输入 $(/usr/local/hadoop/bin/hdfs classpath --glob),它会被解释为一个字符串,不会起作用。