[英]Read a compressed file *with custom extension* with spark
我想使用等效的sc.textFile("path/to/file.Z")
將 gzip 壓縮文件讀入RDD[String]
。
除了我的文件擴展名,如果不是gz
而是Z
,所以文件不被識別為被 gzipped。
我無法重命名它們,因為它會破壞生產代碼。 我不想復制它們,因為它們很大而且很多。 我想我可以使用某種符號鏈接,但我想先看看是否有使用 Scala/spark 的方法(我現在在我的本地 Windows 機器上)。
我怎樣才能有效地閱讀這個文件?
這里有一個解決這個問題的解決方法http://arjon.es/2015/10/02/reading-compressed-data-with-spark-using-unknown-file-extensions/
相關部分:
...擴展 GzipCodec 並覆蓋 getDefaultExtension 方法。
package smx.ananke.spark.util.codecs
import org.apache.hadoop.io.compress.GzipCodec
class TmpGzipCodec extends GzipCodec {
override def getDefaultExtension(): String = ".gz.tmp" // You should change it to ".Z"
}
現在我們剛剛注冊了這個編解碼器,在 SparkConf 上設置 spark.hadoop.io.compression.codecs:
val conf = new SparkConf()
// Custom Codec that process .gz.tmp extensions as a common Gzip format
conf.set("spark.hadoop.io.compression.codecs", "smx.ananke.spark.util.codecs.TmpGzipCodec")
val sc = new SparkContext(conf)
val data = sc.textFile("s3n://my-data-bucket/2015/09/21/13/*")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.