【发布时间】:2017-11-27 04:21:32
【问题描述】:
我有一个包含数亿行的表,我想将其存储在 Spark 的数据框中,并作为 parquet 文件保存到磁盘。
我的 Parquet 文件的大小现在超过 2TB,我想确保我已经对此进行了优化。
这些列中有很大一部分是字符串值,可能很长,但通常也很少有值。例如,我有一列只有两个不同的值(一个 20 个字符和一个 30 个字符的字符串),而另一列的字符串平均长度为 400 个字符,但所有条目中只有大约 400 个不同的值。
在关系数据库中,我通常会将这些值标准化到带有引用的不同表中,或者至少使用某种枚举类型定义我的表。
我在 DF 或 parquet 文件中看不到任何与该模式匹配的内容。列式存储是否有效地处理了这个问题?还是我应该研究一些东西来进一步优化它?
【问题讨论】:
-
我建议您将这些对象转换为
byte[]以存储为镶木地板列。在阅读此内容时,您可以再次转换回对象格式。这不是有效的方法吗?字节数组占用的空间比字符串少。
标签: apache-spark parquet