Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用spark读取带有自定义扩展名*的压缩文件*_Scala_Apache Spark - Fatal编程技术网

Scala 使用spark读取带有自定义扩展名*的压缩文件*

Scala 使用spark读取带有自定义扩展名*的压缩文件*,scala,apache-spark,Scala,Apache Spark,我想使用sc.textFile(“path/to/file.Z”)的等价物将gzip压缩文件读入RDD[String] 除非我的文件扩展名不是gz,而是Z,否则文件不会被识别为gzip 我不能重命名它们,因为这会破坏生产代码。我不想复制它们,因为它们体积庞大,数量众多。我想我可以使用某种符号链接,但我想先看看是否有办法使用scala/spark(我现在在本地的windows机器上) 如何有效地读取此文件?这里有一个解决方法来解决此问题 有关章节: …扩展GzipCodec并重写getDefaul

我想使用
sc.textFile(“path/to/file.Z”)
的等价物将gzip压缩文件读入
RDD[String]

除非我的文件扩展名不是
gz
,而是
Z
,否则文件不会被识别为gzip

我不能重命名它们,因为这会破坏生产代码。我不想复制它们,因为它们体积庞大,数量众多。我想我可以使用某种符号链接,但我想先看看是否有办法使用scala/spark(我现在在本地的windows机器上)


如何有效地读取此文件?

这里有一个解决方法来解决此问题

有关章节:

…扩展GzipCodec并重写getDefaultExtension方法

现在我们刚刚注册了这个编解码器,设置 SparkConf上的spark.hadoop.io.compression.codec:


相关:也相关:在读取文件时,有一个关于添加显式指定压缩编解码器的方法,因此Spark不会从文件扩展名推断压缩编解码器。如果有人需要在托管服务中作为DataRicks执行此操作,我已在此处创建了生成库的项目
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"

}
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/*")