这个问题并不是指在整个集群中分发jars供工作人员使用。
它指的是在客户端机器上指定多个附加库。更确切地说,我正在尝试运行以下命令以检索SequenceFile的内容:
/path/to/hadoop/script fs -text /path/in/HDFS/to/my/file它抛出了这个错误:text: java.io.IOException: WritableName can't load class: util.io.DoubleArrayWritable
我有一个名为DoubleArrayWritable的可写类。事实上,在另一台电脑上一切正常。
我尝试将HADOOP_CLASSPATH设置为包含该类的jar,但没有结果。实际上,在跑步时:
/path/to/hadoop/script classpath 结果不包含我添加到HADOOP_CLASSPATH中的jar。
问题是:如何在运行hadoop时指定额外的库(额外的意思是除了hadoop脚本自动包含在类路径中的库之外的其他库)
一些可能有用的更多信息:
export HADOOP_CLASSPATH=$HADOOP_HOME/lib,这可能解释了为什么忽略export HADOOP_CLASSPATH=$HADOOP_HOME/lib env。发布于 2012-10-17 21:20:00
如果允许设置HADOOP_CLASSPATH,那么
export HADOOP_CLASSPATH=/path/to/jar/myjar.jar:$HADOOP_CLASSPATH; \
hadoop fs -text /path/in/HDFS/to/my/file会做好这份工作。因此,由于在您的示例中,此变量在hadoop-env.sh中被重写,因此请考虑使用-libjars选项:
hadoop fs -libjars /path/to/jar/myjar.jar -text /path/in/HDFS/to/my/file或者手动调用FsShell:
java -cp $HADOOP_HOME/lib/*:/path/to/jar/myjar.jar:$CLASSPATH \
org.apache.hadoop.fs.FsShell -conf $HADOOP_HOME/conf/core-site.xml \
-text /path/in/HDFS/to/my/file发布于 2019-03-08 11:23:35
如果有人想检查hadoop类路径,请在终端中输入hadoop classpath。
要编译它,请使用以下代码:javac -cp $(hadoop classpath):path/to/jars/* java_file.java
发布于 2012-10-18 05:51:17
尝试在默认的CLASSPATH变量中添加jar文件,并将HADOOP_CLASSPATH附加到其中。然后执行你的命令。
export CLASSPATH=/your/jar/file/myjar.jar:$CLASSPATH:$HADOOP_CLASSPATH /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file
https://stackoverflow.com/questions/12940239
复制相似问题