我试图压缩我的Spark输出文件,但发现可以使用SequenceFile。
我这样将文件保存在Java中:
JavaPairRDD<Text, Text> result = ...
result.coalesce(1).saveAsNewAPIHadoopFile(outputPath.toString() + ".seq", Text.class, Text.class, SequenceFileOutputFormat.class);
但是,在saveAsTextFile输出和此序列文件输出之间没有任何大小差异。我已经见过创建序列文件的不同方法,但是其中大多数使用Scala,并且我应该使用Java,因此我使用了这种方法。
结果对rdd类似于:
1, 123.456, 123.457, 123.458, ...
2, 123.789, 123.790, 123.791, ...
...
我做错什么了吗?还是我完全理解序列文件的概念是错误的?
顺便说一句,然后将此输出文件用于R中的数据分析。而且我不能使用SparkSQL,Dataframes等。
如果您还有Parquet或Avro等其他建议,而我不会使用DataFrames,那就太好了。
我只需要压缩我的文件,就应该将其解压缩或直接在Hadoop API或R库上使用。