Jar Hadoop Hadoop_类路径问题

Jar Hadoop Hadoop_类路径问题,jar,hadoop,classpath,Jar,Hadoop,Classpath,这个问题并不是指在整个集群中分发jar供工作人员使用 它指的是在客户机上指定多个附加库。更具体地说:我试图运行以下命令以检索SequenceFile的内容: /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file 它向我抛出以下错误:text:java.io.IOException:WritableName无法加载类:util.io.DoubleArrayWritable 我有一个名为DoubleArrayWritable的可写类

这个问题并不是指在整个集群中分发jar供工作人员使用

它指的是在客户机上指定多个附加库。更具体地说:我试图运行以下命令以检索SequenceFile的内容:

   /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file
它向我抛出以下错误:
text:java.io.IOException:WritableName无法加载类:util.io.DoubleArrayWritable

我有一个名为DoubleArrayWritable的可写类。事实上,在另一台计算机上,一切都运行良好

我试图将HADOOP\u类路径设置为包含包含该类的jar,但没有结果。实际上,在运行时:

   /path/to/hadoop/script classpath 
结果不包含我添加到HADOOP_类路径中的jar

问题是:在运行hadoop时如何指定额外的库(除了hadoop脚本自动包含在类路径中的库之外,还有其他库)

更多可能有帮助的信息:

  • 我无法修改hadoop.sh脚本(或任何相关脚本)
  • 我无法将我的库复制到hadoop安装目录下的/lib目录
  • 在从hadoop.sh运行的hadoop-env.sh中有一行:
    export hadoop\u CLASSPATH=$hadoop\u HOME/lib
    ,这可能解释了为什么忽略我的hadoop\u CLASSPATH env变量

如果允许您设置
HADOOP\u类路径

export HADOOP_CLASSPATH=/path/to/jar/myjar.jar:$HADOOP_CLASSPATH; \
    hadoop fs -text /path/in/HDFS/to/my/file
我会做好的。因为在这种情况下,这个变量在<代码> Hadoop Env.S/<代码>中被重写,因此,请考虑使用<代码> -LIJARARS < /C>选项来代替:

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

尝试将jar文件添加到默认类路径变量中,并将HADOOP_类路径附加到该变量中。 然后执行您的命令


export CLASSPATH=/your/jar/file/myjar.jar:$CLASSPATH:$HADOOP\u CLASSPATH
/path/to/hadoop/script fs-text/path/in/HDFS/to/my/file

如果有人想检查hadoop类路径,请在终端中输入
hadoop类路径

要编译它,请使用以下命令:
javac-cp$(hadoop classpath):path/To/jars/*java_file.java

是的,但是hadoop脚本执行以下操作:导出hadoop\u CLASSPATH=$hadoop\u HOME/lib。它重写了我的HADOOP_类路径正如我说的,我不想设置“分布式”类路径。我只想在客户端设置类路径machine@Razvan:好的。然后可以手动调用FsShell(参见上面的示例)