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

时间:2016-02-08 08:06:47

标签: amazon-s3 apache-spark pyspark

我在用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 个答案:

答案 0 :(得分:0)

您还需要指定输出格式。

试试这个:

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

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

  • gzip的: org.apache.hadoop.io.compress.GzipCodec
  • 的bzip2: org.apache.hadoop.io.compress.BZip2Codec
  • LZO: com.hadoop.compression.lzo.LzopCodec