2016-08-02 7 views
0

Ich verwende com.cloudera.crunch Version: '0.3.0-3-cdh-5.2.1'.java.lang.UnsatisfiedLinkError beim Schreiben mit Crunch MemPipeline

Ich habe ein kleines Programm, das einige AVROs liest und ungültige Daten anhand einiger Kriterien herausfiltert. Ich benutze pipeline.write (PCollection, AvroFileTarget), um die ungültige Datenausgabe zu schreiben. Es funktioniert gut im Produktionslauf.

Zum Testen dieses Codeabschnitts verwende ich die MemPipeline-Instanz. Aber es scheitert beim Schreiben der Ausgabe in diesem Fall.

ich Fehler:

java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V 
    at org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(Native Method) 
    at org.apache.hadoop.util.NativeCrc32.calculateChunkedSumsByteArray(NativeCrc32.java:86) 
    at org.apache.hadoop.util.DataChecksum.calculateChunkedSums(DataChecksum.java:428) 
    at org.apache.hadoop.fs.FSOutputSummer.writeChecksumChunks(FSOutputSummer.java:197) 
    at org.apache.hadoop.fs.FSOutputSummer.flushBuffer(FSOutputSummer.java:163) 
    at org.apache.hadoop.fs.FSOutputSummer.flushBuffer(FSOutputSummer.java:144) 
    at org.apache.hadoop.fs.FSOutputSummer.write(FSOutputSummer.java:78) 
    at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:50) 
    at java.io.DataOutputStream.writeBytes(DataOutputStream.java:276) 
    at com.cloudera.crunch.impl.mem.MemPipeline.write(MemPipeline.java:159) 

Jede Idee, was falsch ist?

+0

Ich erinnere mich an einige bestehende Bugs in MemPipeline der AVRO Handhabung zu sehen; Ist Ihr Schema etwas besonders komplex? Können Sie Avro-Datensätze mit diesem Schema in einer MemPipeline schreiben oder sind es nur die ungültigen Datensätze, die Sie aussortieren? – Suriname0

+0

Hallo, ich kann mit MemPipeline keine Datensätze schreiben. MemPipeline.write() gibt mir immer diesen Fehler. – Yogesh

+0

Es ist dann wahrscheinlich ein Problem mit Ihrem Schema. Versuchen Sie, einen einfachen Test mit einem sehr einfachen Avro-Schema (z. B. einem Datensatz mit einem einzelnen String-Feld) zu erstellen, und prüfen Sie, ob Sie materialisierte Datensätze auf die Festplatte schreiben können. Wenn das nicht möglich ist, handelt es sich wahrscheinlich um ein Problem mit Ihren Abhängigkeiten. Wenn Sie ein Tool wie Maven verwenden, überprüfen Sie den Abhängigkeitsbaum und erwägen Sie explizit, einige transitive Abhängigkeiten auszuschließen, die möglicherweise Probleme verursachen. – Suriname0

Antwort

1

Die Hadoop-Umgebungsvariable sollte ordnungsgemäß zusammen mit hadoop.dll und winutils.exe konfiguriert werden.

Auch das JVM-Argument übergeben während der Ausführung von MR Job/Anwendung -Djava.library.path = HADOOP_HOME/lib/native