【发布时间】:2021-11-24 06:52:12
【问题描述】:
我的程序有些奇怪,我负责处理流量日志并将处理后的数据存储在一个表中。日志这么大,我们需要想办法降低存储成本。处理后的数据,table schema 有 30 列,其中 14 列是关于设备和应用环境的,其中 8 列是点或页面的属性。由于我们的执行引擎是 Hive,所以我们使用 ORC 作为文件格式,使用 zlib 作为压缩方法。为了方便 BI/BA 使用表,我们还在写入文件之前通过 point_name 分配数据。 问题来了,如果我们在没有“按 xx 分发”的情况下加载数据,则需要 14.5497GB 存储空间,当我尝试按点名(网络或应用程序中的点名称)进行分发时,存储空间会翻倍到 28.6083GB,然后我尝试通过cuid(设备的唯一ID)分发,存储大小为11.7286GB,然后我尝试通过point_name+cuid分发,存储为29.6391GB,我很困惑“分发依据”如何影响存储非常。有人可以向我解释一下吗?非常感谢。
【问题讨论】:
标签: hive compression bigdata zlib orc