当前位置: 首页 > 知识库问答 >
问题:

Hadoop Hadoop_类路径问题

周翰池
2023-03-14

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

它指的是在客户端机器上指定一些额外的库。更具体地说:我试图运行以下命令来检索序列文件的内容:

   /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file

它抛给我这个错误:text:java.io.IOExc0019: WritableName不能加载类:util.io.DoubleArrayWritable

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

我试图设置HADOOP_CLASSPATH以包含包含该类的jar,但没有结果。实际上,跑步时:

   /path/to/hadoop/script classpath 

结果不包含我添加到HADOOP_类路径中的jar。

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

更多可能有帮助的信息:

  • 我不能修改hadoop.sh脚本(也不能修改任何相关脚本)
  • 我不能将我的库复制到hadoop安装目录下的 /lib目录
  • 在从hadoop.sh运行的hadoop-env.sh中有一行:导出HADOOP_CLASSPATH=$HADOOP_HOME/lib这可能解释了为什么我的HADOOP_CLASSPATHenv var被忽略。

共有3个答案

鲁熙云
2023-03-14

尝试将jar文件添加到默认CLASSPATH变量中,并将HADOOP_CLASSPATH附加到其中。然后执行你的命令。

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

窦华晖
2023-03-14

如果有人想检查hadoop类路径,请在终端中输入hadoop类路径
要编译它,请使用以下命令:javac-cp$(hadoop classpath):path/To/jars/*java\u文件。java

司空瑾瑜
2023-03-14

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

export HADOOP_CLASSPATH=/path/to/jar/myjar.jar:$HADOOP_CLASSPATH; \
    hadoop fs -text /path/in/HDFS/to/my/file

我会做好的。因为在您的例子中,这个变量在hadoop env中被重写。因此,请考虑使用<代码> -LBIJARS < /代码>选项来代替:

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

 类似资料:
  • 问题内容: 我有两节课: MyApplication 库 该库已被编译为Library.class,并且源代码不再可用。我现在正在尝试从源代码编译MyApplication。MyApplication取决于库。该库的软件包名称为org.myCompany。我尝试将我的类路径设置为以下内容: 产生以下javac编译器错误消息: 所以我将类路径更改为: 产生完全相同的错误消息。 如何设置Windows

  • 问题内容: 我一直在尝试运行一个jar文件-我们称它为test.jar-在Unix系统上使用Sybase jconn3.jar。 我创建了一个具有以下内容的MANIFEST.MF文件: 这给出了ClassNotFoundError。$ SYBASE是指向/ opt / sybase13的系统变量;我还尝试了以下方法: 和 但是,如果我将jconn3.jar文件从$ SYBASE / jConnec

  • 问题内容: 我有一个Spring Boot应用程序,当我在本地使用“ mvn clean install”进行部署时,它运行良好,但是当通过Jenkin产生战争时,它会引发以下错误。 我只是尝试使用超越比较来比较2个war文件,而且除了用于编译的JDK次要版本外,我看不到任何差异。 我试图在我的本地版本和jenkin版本中搜索SerializationConfig.class, 以下命令的输出是:

  • 我在hadoop作业中看到了这一点: 这个问题看起来与这个问题类似,只是我没有在我的类路径上提供任何jax-b依赖项。然而,它看起来确实像hadoop。 有没有办法强迫hadoop使用jdk jaxb JAR,或者只使用它自己提供的jaxb JAR,而不是两者混合使用?

  • 我在设置Java开发环境时遇到了一个问题。在过去,我安装了Java,然后安装了IDE,然后开始编写代码。我现在开始设置我的笔记本电脑,使用命令行编译和记事本作为我的代码编辑器。这是我第一次尝试纠正错误。 我运行javac,它创建了我的。类文件没有问题,但是我尝试用java A运行类文件,它抛出了一个错误: c:\工作区 我的类路径设置为C:\Program Files\Java\jdk-14.0.

  • 我是一名新的程序员,正在学习Java入门课程。我的操作系统是Windows 10。大约4-5个月前,我们最初设置了类路径,从命令行运行了我们的“Hello World”程序,然后再也没有使用过它。 现在我们正在做一个输入/输出重定向到文件的练习,我必须忘记我的类路径是什么,所以我试图重新设置它。 我已经使用以下命令设置了我的类路径: 然后我尝试运行我的程序,它位于目录C:\Users\grant\