为什么时间戳SECONDARY流在ORC文件中占用了这么多空间?

时间:2018-11-07 14:53:38

标签: hadoop timestamp size orc

我有一个具有以下结构的ORC文件:

Type: struct<event_ts:timestamp,event_ts_rounded:timestamp>

第一列包含以毫秒为单位的时间戳。第二列包含相同的时间戳值,四舍五入为整秒(没有小数部分)。

数据示例:

{"event_ts":"2018-10-08 00:00:00.002","event_ts_rounded":"2018-10-08 00:00:00"}
{"event_ts":"2018-10-08 00:00:00.003","event_ts_rounded":"2018-10-08 00:00:00"}
{"event_ts":"2018-10-08 00:00:00.004","event_ts_rounded":"2018-10-08 00:00:00"}

Orcfiledump显示有关流大小的以下信息:

Stream: column 1 section DATA start: 63802470 length 148475
Stream: column 1 section SECONDARY start: 63950945 length 19840932
Stream: column 2 section DATA start: 83791877 length 148475
Stream: column 2 section SECONDARY start: 83940352 length 761

DATA流的大小完全相同。这是预期的。 没有小数部分的时间戳的SECONDARY流的大小很小。这也是预期的。

但是,为什么第一列的SECONDARY流中的毫秒值占用如此大的空间?内部最多可以有1000个唯一值(从.000到.999)。

此外,根据ORC文档,应优化SECONDARY流,以通过删除结尾的零来占用尽可能少的空间:https://orc.apache.org/specification/ORCv1/

我已经使用ORCWriter 1.5.2版创建了ORC文件。

谢谢。

0 个答案:

没有答案