[英]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.