簡體   English   中英

在 Spark 中壓縮序列文件?

[英]Compressing sequence file in Spark?

我正在嘗試將 RDD 保存為壓縮的序列文件。 我能夠保存非壓縮文件正在調用:

counts.saveAsSequenceFile(output)

其中 counts 是我的 RDD(IntWritable,Text)。 但是,我沒有設法壓縮輸出。 我嘗試了幾種配置,但總是有異常:

counts.saveAsSequenceFile(output, classOf[org.apache.hadoop.io.compress.SnappyCodec])
<console>:21: error: type mismatch;
 found   : Class[org.apache.hadoop.io.compress.SnappyCodec](classOf[org.apache.hadoop.io.compress.SnappyCodec])
 required: Option[Class[_ <: org.apache.hadoop.io.compress.CompressionCodec]]
              counts.saveAsSequenceFile(output, classOf[org.apache.hadoop.io.compress.SnappyCodec])

 counts.saveAsSequenceFile(output, classOf[org.apache.spark.io.SnappyCompressionCodec])
<console>:21: error: type mismatch;
 found   : Class[org.apache.spark.io.SnappyCompressionCodec](classOf[org.apache.spark.io.SnappyCompressionCodec])
 required: Option[Class[_ <: org.apache.hadoop.io.compress.CompressionCodec]]
              counts.saveAsSequenceFile(output, classOf[org.apache.spark.io.SnappyCompressionCodec])

它甚至不適用於 Gzip:

 counts.saveAsSequenceFile(output, classOf[org.apache.hadoop.io.compress.GzipCodec])
<console>:21: error: type mismatch;
 found   : Class[org.apache.hadoop.io.compress.GzipCodec](classOf[org.apache.hadoop.io.compress.GzipCodec])
 required: Option[Class[_ <: org.apache.hadoop.io.compress.CompressionCodec]]
              counts.saveAsSequenceFile(output, classOf[org.apache.hadoop.io.compress.GzipCodec])

你能提出解決方案嗎? 另外,我沒有找到如何指定壓縮參數(即 Snappy 的壓縮類型)

saveAsSequenceFile的簽名是def saveAsSequenceFile(path: String, codec: Option[Class[_ <: CompressionCodec]] = None) 您需要發送一個Option[Class[_ <: CompressionCodec]]作為codec 例如,

counts.saveAsSequenceFile(output, Some(classOf[org.apache.hadoop.io.compress.SnappyCodec]))

如果你仔細閱讀了type mismatch的錯誤信息,你應該已經自己更正了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM