java.lang.NoClassDefFoundError при чтении hadoop SequenceFile - PullRequest
3 голосов
/ 26 сентября 2011

Я пытаюсь прочитать SequenceFile с пользовательским Writeable в нем.

Вот код:

public static void main(String[] args) throws IOException {
    //String iFile = null;
    String uri = "/tmp/part-r-00000";
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(URI.create(uri), conf);
    Path path = new Path(uri);
    MyClass value = new MyClass();
    SequenceFile.Reader reader = null;
    try {
        reader = new Reader(fs, path, conf);
        while(reader.next(value)){
            System.out.println(value.getUrl());
            System.out.println(value.getHeader());
            System.out.println(value.getImages().size());               
            break;
        }           

    } catch (Exception e) {// Catch exception if any
        System.err.println("Error: " + e.getMessage());
    }
    finally {
        IOUtils.closeStream(reader);
    }

}

Когда я запускаю это, я получаю следующее исключение:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<init>(DefaultMetricsSystem.java:37)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<clinit>(DefaultMetricsSystem.java:34)
    at org.apache.hadoop.security.UgiInstrumentation.create(UgiInstrumentation.java:51)
    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:196)
    at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:159)
    at org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:216)
    at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:409)
    at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:395)
    at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:1418)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1319)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:226)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:109)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:210)
    at com.iathao.run.site.emr.DecryptMapReduceOutput.main(DecryptMapReduceOutput.java:32)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.Configuration
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    ... 14 more

Все библиотеки упакованы в файл jar и присутствуют.Что не так, и как мне это исправить?

1 Ответ

4 голосов
/ 27 сентября 2011

Должен быть включен Jadoop-common - *. Jar для класса org.apache.commons.configuration.Configuration.Поместите банку как зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...