Wenn ich versuche, eine Datei in HDFS anzuhängen, erhalte ich eine Ausnahme wie unten. Bitte beraten
file.append(new Path(uri));
Ausnahme
java.lang.NullPointerException
at org.apache.hadoop.hdfs.DFSOutputStream.isLazyPersist(DFSOutputStream.java:1709)
at org.apache.hadoop.hdfs.DFSOutputStream.getChecksum4Compute(DFSOutputStream.java:1550)
at org.apache.hadoop.hdfs.DFSOutputStream.<init>(DFSOutputStream.java:1560)
at org.apache.hadoop.hdfs.DFSOutputStream.<init>(DFSOutputStream.java:1667)
at org.apache.hadoop.hdfs.DFSOutputStream.newStreamForAppend(DFSOutputStream.java:1694)
at org.apache.hadoop.hdfs.DFSClient.callAppend(DFSClient.java:1824)
at org.apache.hadoop.hdfs.DFSClient.append(DFSClient.java:1885)
at org.apache.hadoop.hdfs.DFSClient.append(DFSClient.java:1855)
at org.apache.hadoop.hdfs.DistributedFileSystem$4.doCall(DistributedFileSystem.java:340)
at org.apache.hadoop.hdfs.DistributedFileSystem$4.doCall(DistributedFileSystem.java:336)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:348)
at org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:318)
at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:1164)
Beachten Sie, dass dieses Problem nur bei der Hadoop-Version auftritt 2.6.1 aber es funktioniert gut mit Version 2.7.1
Antworten:
3 für die Antwort № 1Das Problem war mit der Version von Apache Hadoop Client Jar. In meiner pom.xml hatte ich die neueste Version 2.7.1, die zu meiner Überraschung nicht mit der Installation von hadoop 2.6.1 kompatibel ist.Es gibt keine Abwärtskompatibilität für den Hadoop-Client-Jar. Die letzte Änderung an meiner pom.xml ist wie folgt
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.1</version>
<dependency>
1 für die Antwort № 2
Dies geschieht aufgrund eines Versionskonflikts. Versuchen Sie, die Abhängigkeit in der XML-Datei zu ändern