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)
,它会被解释为一个字符串,不会起作用。
我正在尝试开发 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
.
当您 运行 此命令时,该值必须是 shell returns 的值:
/usr/local/hadoop/bin/hdfs classpath --glob
不要尝试输入 $(/usr/local/hadoop/bin/hdfs classpath --glob)
,它会被解释为一个字符串,不会起作用。