在 Amazon s3 中将 Spark RDD 编写为 Gzipped 文件

Posted

技术标签:

【中文标题】在 Amazon s3 中将 Spark RDD 编写为 Gzipped 文件【英文标题】:Writing Spark RDD as Gzipped file in Amazon s3 【发布时间】:2016-02-08 08:06:46 【问题描述】:

我在用 python 编写的 spark 代码中有一个输出 RDD。我想将它作为 gzip 文件保存在 Amazon S3 中。我尝试了以下功能。 下面的函数正确地将输出 rdd 保存在 s3 中,但不是 gzip 格式。

output_rdd.saveAsTextFile("s3://<name-of-bucket>/")

以下函数返回错误:: TypeError: saveAsHadoopFile() 至少需要 3 个参数(给定 3 个)

output_rdd.saveAsHadoopFile("s3://<name-of-bucket>/", 
                        compressionCodecClass="org.apache.hadoop.io.compress.GzipCodec"
                       )

请用正确的方法指导我。

【问题讨论】:

【参考方案1】:

您还需要指定输出格式。

试试这个:

output_rdd.saveAsHadoopFile("s3://<name-of-bucket>/", "org.apache.hadoop.mapred.TextOutputFormat", compressionCodecClass="org.apache.hadoop.io.compress.GzipCodec")

您可以使用任何 Hadoop 支持的压缩编解码器:

压缩包: org.apache.hadoop.io.compress.GzipCodec bzip2: org.apache.hadoop.io.compress.BZip2Codec LZO: com.hadoop.compression.lzo.LzopCodec

【讨论】:

与所提出的问题没有直接关系,但您可能还想考虑使用 s3a 或 s3n 来实现更快和大容量的写入。 [参考| ***.com/questions/33356041/…

以上是关于在 Amazon s3 中将 Spark RDD 编写为 Gzipped 文件的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming 检查点到 amazon s3

如何在 Spark 中将两个 RDD[string] 合并在一起?

如何在spark(Python)中将两个rdd组合成on rdd

如何在spark中将rdd数据一分为二?

如何在 Spark Streaming 中将 RDD 转换为 DataFrame,而不仅仅是 Spark

在scala中将Spark Dataframe转换为RDD