首页 > 解决方案 > Hadoop SequenceFile 和 TextFile 之间没有大小差异?

问题描述

我正在尝试压缩我的 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 库上使用。

标签: apache-sparkhadoopavroparquetsequencefile

解决方案


推荐阅读