apache-spark - 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 库上使用。
解决方案
推荐阅读
- java - maven jaxws-maven-plugin 在没有特定适配器的情况下将 XMLGregorianCalendar 更改为 Calendar
- spring - 在 Spring 中使用 MSAL 中的两个授权客户端时,我收到错误 AADSTS65001
- typo3 - 无需 FTP 或 SSH 将网站移动到另一台服务器
- javascript - 如何隔离 Gunjs 数据库?
- c# - 不同的对象访问不同的成员
- reactjs - 如何使用redux在2个屏幕之间传递数据并仅反应本机
- reactjs - 将自定义道具传递给打字稿中的样式组件
- node.js - yarn webpack 错误:Node Sass 版本 6.0.1 与 ^4.0.0 不兼容
- javascript - 如何在将照片上传到 Firebase 存储时将日期或时间等用户图像详细信息添加到文件名?
- freeradius - freeradius如何重新检查重新检查NAS中的会话是否可用?