用scala在spark中读取压缩文件

Posted

技术标签:

【中文标题】用scala在spark中读取压缩文件【英文标题】:reading compressed file in spark with scala 【发布时间】:2017-06-17 10:03:05 【问题描述】:

我正在尝试使用以下代码在数据帧/rdd 中读取 spark/scala 中 .gz 文件的内容

 val conf = new SparkConf()
 val sc = new SparkContext(conf)
    val data = sc.wholeTextFiles("path to gz file")
    data.collect().foreach(println);

.gz 文件为 28 mb,当我使用此命令进行 spark 提交时

spark-submit --class sample--master local[*] target\spark.jar

它在控制台中给出了一个 Java 堆空间问题。

这是读取 .gz 文件的最佳方式吗?如果是,我该如何解决 java 堆错误问题。

谢谢

【问题讨论】:

您的解决方案在reading multiple compressed files 原来的答案其实在这里***.com/questions/36604145/… Read whole text files from a compression in Spark的可能重复 【参考方案1】:

免责声明:该代码和描述将纯粹使用 spark 读入一个小型压缩文本文件,将其收集到每行的数组中,并将整个文件中的每一行打印到控制台。在外面做这件事的方法和理由的数量远远超过在 spark 做的那些

1) 如果可以摆动它,请使用 SparkSession 而不是 SparkContext。 sparkSession.read.text() 是要使用的命令(它会自动处理一些压缩格式) 2)或者至少使用sc.textFile()而不是wholeTextFiles 3)您正在调用 .collect 将整个文件带回驱动程序的数据(在这种情况下,因为您是本地而不是网络绑定)。如果必须进行收集,请将 --driver-memory 选项添加到 spark shell 以增加内存。

【讨论】:

以上是关于用scala在spark中读取压缩文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Spark 2.3.0 中读取 Zstandard 压缩文件

如何在spark中解压和读取包含多个压缩文件的文件

Spark 2.1.0:读取压缩的 csv 文件

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

如何使用 spark DF 或 DS 读取“.gz”压缩文件?

Spark:读取hdfs gz压缩包