压缩具有许多重复项的csv文件的最佳方法是什么?

时间:2016-07-06 16:31:36

标签: java csv comparison avro apache-drill

我正在处理如下的一些数据,第一列是交易ID,第二列是模拟ID(重复很多),第三列是一些愚蠢的日期也很复制,第四列是交易的现值,大多只是0,但任何其他价值都应该是非常独特的。

我的问题是,有没有办法将数据压缩到当前大小的20%存储空间,同时支持查找功能?

我尝试过Avro项目,它可以节省40%的存储空间并支持apache钻取查询,但我的老板预计应该节省80%。

41120634|1554|20150203|-509057.56
40998001|1554|20150203|0
40960705|1554|20150203|0
40998049|1554|20150203|0
41038826|1554|20150203|0
41081136|1554|20150203|-7198152.23
41120653|1554|20150203|-319.436349
41081091|1554|20150203|-4.28520907E+009
41120634|1536|20150227|-528555.02
41038808|1536|20150227|0
40998001|1536|20150227|0
41120634|1556|20150130|-528822.733
40960705|1536|20150227|0
40998049|1536|20150227|0
41038826|1536|20150227|0

1 个答案:

答案 0 :(得分:1)

Apache Drill支持Parquet文件格式。 Parquet是一种基于列的文件格式,支持柱状压缩。这允许Parquet利用列中的重复值来节省空间。相比之下,Avro是一种基于行的文件格式,因此对于列中的重复值,它将无法实现与Parquet一样多的压缩。 These guys已报告使用镶木地板对其csv数据进行了87%的压缩。有关如何将Parquet与apache drill一起使用的更多信息是here

另外作为旁注,Drill团队正在为Parquet进行改进,这可能会进入1.13版本。我相信随着新的改进,Parquet文件的读取性能提高了4倍。