级联镶木地板抛出ClassNotFoundException

时间:2014-01-01 17:09:18

标签: hadoop mapreduce cascading

尝试运行此代码

Main.java:

public static void main(String[] args) {
...
..
Properties properties = new Properties();
AppProps.setApplicationJarClass(properties, Main.class);
HadoopFlowConnector flowConnector = new HadoopFlowConnector(properties);

Scheme sourceScheme = new queries.ParquetTupleScheme(new Fields("a", "b", "c"));
Tap inTap = new Hfs(sourceScheme, inPath);
...
...
...
}

我收到此错误:

java.lang.NoClassDefFoundError: cascading/scheme/Scheme

这是我到目前为止所尝试的内容

  1. 当我替换它时:

    Scheme sourceScheme = new ParquetTupleScheme(new Fields("a", "b", "c"));

    用这个:

    Scheme sourceScheme = null;

    错误消失

  2. 当我创建扩展Scheme<JobConf, RecordReader, OutputCollector, Object[], Object[]>的类ParquetTupleScheme时 错误消失

  3. 当我试图检查这是否是特定的镶木地板级联错误时

    Object a = new PigCombiner()

    错误消失

  4. 我正在使用:

    • 级联2.5.1
    • parquet-cascading 1.3.0
    • hadoop-core 1.2.1

    我做错了什么?

1 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题。据我所知,这个问题源于类路径中缺少级联的Scheme.class,从而在运行时抛出此异常。

为了解决这个问题,你应该使用&#39; export HADOOP_CLASSPATH = / jar_directory / cascading-core-2.5.1.jar&将cascading-core-2.5.1.jar包含到你的hadoop类路径中。 #39; 即可。您可以使用&#39; hadoop classpath&#39; 来检查jar是否已正确包含。<​​/ p>

这是我在stackoverflow中的首次亮相。 :)