我用Spark用JAVA编写程序。

我有一个名为“copied_logs”的JavaRDD,它使用map并从hdfs上的日志中复制几个字段。

现在,我想用Bzip2压缩“copied_logs”,然后将其保存。
我想使用“saveAsTextFile”功能将此数据保存在hdfs上。
我的压缩和保存代码如下:

    CompressionCodec codec = new BZip2Codec();
    copied_logs.saveAsTextFile(output_dir + "copied_logs.json", codec);

但我得到这个错误:
Error:(128, 69) java: incompatible types: org.apache.hadoop.io.compress.CompressionCodec cannot be converted to java.lang.Class<? extends org.apache.hadoop.io.compress.CompressionCodec>

谢谢。

最佳答案

方法saveAsTextFile的第二个参数是类类型(doc)。因此,您需要传递.class对象。

就像是:

copied_logs.saveAsTextFile(output_dir + "copied_logs.json", BZip2Codec.class)

10-06 09:00