在 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