我有一个具有以下结构的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文件。
谢谢。