0
我正在使用com.cloudera.crunch版本:'0.3.0-3-cdh-5.2.1'。使用緊縮寫入時java.lang.UnsatisfiedLinkError MemPipeline
我有一個小程序,它讀取一些AVRO並根據一些標準過濾掉無效數據。我正在使用pipeline.write(PCollection,AvroFileTarget)來寫入無效的數據輸出。它在生產運行中運行良好。
對於單元測試這段代碼,我使用MemPipeline實例。 但是,在這種情況下寫入輸出時會失敗。
我得到錯誤:
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)
任何想法有什麼不對?
我記得看到在MemPipeline的AVRO處理存在的一些缺陷;你的模式是否特別複雜?您是否可以在MemPipeline中使用該模式編寫任何Avro記錄,還是僅僅是您篩選出的無效記錄會引發此錯誤? – Suriname0
嗨,我無法使用MemPipeline寫任何記錄。 MemPipeline.write()總是給我這個錯誤。 – Yogesh
那麼這可能是您的模式的一個問題。嘗試使用非常基本的Avro模式創建一個簡單的測試(例如一個帶有單個字符串字段的記錄),並查看您是否能夠將物化記錄寫入磁盤。如果你不能,這可能是你的依賴問題;如果您使用的是像Maven這樣的工具,請檢查依賴關係樹,並考慮明確排除一些可能導致問題的傳遞依賴關係。 – Suriname0