Hadoop字数计算示例因';不是顺序文件';。如何设置文件格式?

Hadoop字数计算示例因';不是顺序文件';。如何设置文件格式?,hadoop,Hadoop,我正在尝试运行hadoop jar/usr/lib/hadoop/hadoop-examples.jar aggregatewordcount/data/gutenberg/huckfinn.txt output/guten4,但出现错误“huckfinn.txt不是序列文件” 我继续读下去,在中看到一个参数textinputformat,我猜它可以解决这个问题。但我不知道该为它指定什么 如果我运行hadoop jar/usr/lib/hadoop/hadoop-examples.jar agg

我正在尝试运行
hadoop jar/usr/lib/hadoop/hadoop-examples.jar aggregatewordcount/data/gutenberg/huckfinn.txt output/guten4
,但出现错误“huckfinn.txt不是序列文件”

我继续读下去,在中看到一个参数
textinputformat
,我猜它可以解决这个问题。但我不知道该为它指定什么

如果我运行hadoop jar/usr/lib/hadoop/hadoop-examples.jar aggregatewordcount/data/gutenberg/huckfinn.txt output/guten5 2 textinputformat,我会得到一个不同的错误,“java.lang.RuntimeException:配置对象时出错”

,根据您问题的链接,
java.lang.RuntimeException:配置对象时出错
异常是由示例的依赖项不在tasktracker的类路径上引起的。您可以从完整的回溯中看到这一点:当我在我的机器上运行您的第二个命令时,我得到:

java.lang.RuntimeException: Error in configuring object
    [...]
Caused by: java.lang.reflect.InvocationTargetException
    [...]
Caused by: java.lang.RuntimeException: Error in configuring object
    [...]
Caused by: java.lang.reflect.InvocationTargetException
    [...]
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.hadoop.examples.AggregateWordCount$WordCountPlugInClass
    [...]
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.examples.AggregateWordCount$WordCountPlugInClass
    [...]
讨论为TaskTracker提供依赖项的不同方法

为了运行aggregatewordcount示例,我使用了
-libjars
选项:

hadoop-jar hadoop-examples.jar aggregatewordcount-libjars hadoop-examples.jar/data/gutenberg/huckfinn.txt output/guten7 2 textinputformat

在下面的检查中完成

int numOfReducers = 1;
if (args.length > 2) {
  numOfReducers = Integer.parseInt(args[2]);
}

..............

if (args.length > 3 && 
    args[3].compareToIgnoreCase("textinputformat") == 0) {
  theInputFormat = TextInputFormat.class;
} else {
  theInputFormat = SequenceFileInputFormat.class;
}
如果未将
textinputformat
(文字字符串)指定为参数,则输入格式默认为SequenceFileInputFormat,因此
huckfinn.txt不是SequenceFile错误
。此外,如果未指定,则减速器默认为1

使用以下命令运行作业

hadoop jar hadoop-mapred-examples-0.21.0.jar aggregatewordcount /user/praveensripati/input/sample.txt /user/praveensripati/output 2 textinputformat
请注意,通常hadoop映射示例-0.21.0.jar中有一个版本号。该文件位于Hadoop安装的根目录中。确保文件
/usr/lib/hadoop/hadoop examples.jar
存在


要解决
java.lang.RuntimeException:配置对象时出错,请检查日志文件中的堆栈跟踪并将其发回。

无需添加
-libjars
,使用
jar
选项指定的jar文件将由Hadoop框架自动复制到所有节点。如果需要复制任何其他第三方JAR,则必须使用
-libjars
选项。事实证明,Josh对于我得到的错误是正确的。使用Cloudera3添加-libjars为我解决了这个问题。谢谢你,乔希!谢谢你,普拉文。非常注意这段代码。这有助于澄清我最初的命令毕竟是好的。关于我的jar中缺少的版本号,我的目录中有两个jar示例,一个是版本。最后,Josh提出的解决方案修复了我遇到的错误。不过,谢谢你的详细回复,这有助于我的理解。我不太清楚它是如何解决的-libjars选项适用于第三方软件。hadoop jar
选项指定的jar由hadoop框架自动分发。我能够在没有-libjars选项的情况下成功运行作业。您是否使用Cloudera安装?这可能是Cloudera软件包及其安装方式的具体问题(我在Ubuntu 10.04上运行)也许,我在Ubuntu 11.10上使用Apache Hadoop。我在Mac OS 10.6上使用Hadoop 0.20.205.0(通过自制安装)。