簡體   English   中英

使用 spark 讀取 * 帶有自定義擴展名 * 的壓縮文件

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

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