索引:
1.背景
2.存储方式
3.存储效率
4.读写方式
5.结论
6.其他格式
背景
最近在做一个大数据分析平台的项目,项目开发过程中使用spark来计算工作流工程中的每一个计算步骤,多个spark submit计算提交,构成了一个工作流程的计算。其中使用csv来作为多个计算步骤之间的中间结果存储文件,但是csv作为毫无压缩的文本存储方式显然有些性能不够,所以想要寻找一个存储文件效率更高或者执行效率更高的文件格式作为替代品。
存储方式
csv
csv数据文件属于文本存储方式,spark默认支持,按照行以文本的方式写到文件中,每行一条记录.一般来说文本存储方式无压缩,性能相对较差。
parquetApache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Mapreduce、Spark等),被多种查询引擎支持(Hive、Impala、Drill等),并且它是语言和平台无关的。Parquet最初是由Twitter和Cloudera合作开发完成并开源,2015年5月从Apache的孵化器里毕业成为Apache顶级项目。
Parquet最初的灵感来自Google于2010年发表的Dremel论文,文中介绍了一种支持嵌套结构的存储格式,并且使用了列式存储的方式提升查询性能,在Dremel论文中还介绍了Google如何使用这种存储格式实现并行查询的,如果对此感兴趣可以参考论文和开源实现Drill。