java - 不是来自测试 hadoop mapreduce wordcount 的有效 JAR

标签 java hadoop jar mapreduce

Hadoop Mapreduce 的新手,我不确定为什么会收到此错误。

我目前得到:

Not a valid JAR: /nfsdata/DSCluster/home/user/bli1/wordcount/wc.jar

这是我的过程:

HDFS文件结构:

   /bli1
      /wordcount
         wc.jar
         WordCount.java
         /input
            file01
         /output
            file02
  1. 在本地机器上创建 WordCount.javawc.jarjar cf wc.jar WordCount.java
  2. 在本地机器上创建 file01file02
  3. 创建 /input/output /wordcount 内的目录在 hdfs 中
  4. 使用 hdfs 将文件移动到它们的目录

    • hdfs dfs -moveFromLocal <localsrc> <dst>
  5. 运行命令:

    hadoop jar/user/bli1/wordcount/wc.jar WordCount/user/bli1/wordcount/input/user/bli1/wordcount/output

输出:

Not a valid JAR: /user/bli1/wordcount/wc.jar

我试过这样做来制作 JAR,但我会​​收到错误消息。

$ hadoop com.sun.tools.javac.Main WordCount.java
Error: Could not find or load main class com.sun.tools.javac.Main

如果这个制作 JAR 的过程不同于 jar cf wc.jar WordCount.java那么这可能是导致问题的原因。但是我不知道为什么我得到 find or load main class error

最佳答案

Liondancer,在 Java jar 文件中,您必须添加已编译的 *.class 文件,而不是源 *.java 文件。

另外,一旦你解决了这个问题,我认为 Hadoop 很可能会提示输出目录的存在。我的意思是,Hadoop 会期望自己创建这样一个输出目录,该目录一定不存在。

关于java - 不是来自测试 hadoop mapreduce wordcount 的有效 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261985/

相关文章:

java - 在两个 JPanel 对象之间发送消息

hadoop - 无法在Ubuntu 10.04 VM上安装Cloudera CDH4

java - 如何将基本 jar 转换为可执行 jar?

java - 以编程方式隐藏电子表格

java - 应该如何使用查询条件过滤持久集

scala - 找不到 Apache Spark Mongo-Hadoop 连接器类

java - PHP 运行 java jar 文件,参数作为 php 变量

java - 如何以编程方式搜索某个 JAR 中的文件?

java - 在对象中存储对象

hadoop - 在 mapreduce 中操作迭代器