You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Parquet文件中INT64与DECIMAL(18,6)含义及工具输出疑问

Parquet类型相关问题解答

1. INT64和DECIMAL(18,6)的含义

  • INT64:这是Parquet里的基础物理数值类型,代表64位有符号整数,能存储的范围是 -9223372036854775808 到 9223372036854775807,对应很多编程语言里的长整型(比如Java的long、Python的int),是直接定义数据在磁盘上存储格式的类型。
  • DECIMAL(18,6):这是Parquet的逻辑类型(语义类型),用于表示精确的定点小数,完全避免浮点数的精度丢失问题,特别适合金融、财务场景。括号里的参数含义:
    • 18是精度:指整个数字的总位数(整数部分+小数部分);
    • 6是标度:指小数部分的位数。
      举个例子,这个类型可以精准存储123456789012.345678这样的数值,不会出现近似值。

2. 为什么parquet-tools会同时显示两者?字段实际类型是什么?

这得从Parquet的类型设计逻辑说起:它把数据的存储格式和语义含义分开了,前者叫物理类型,后者叫逻辑类型。

你看到的输出optional int64 my_column (DECIMAL(18,6))里:

  • int64是物理存储类型:意思是这个DECIMAL类型的数据,在磁盘上是用64位整数来存储的(具体是把原始小数乘以10^6转成整数保存,读取时再除以10^6还原);
  • DECIMAL(18,6)是逻辑类型:这才是字段的实际语义——它本质是一个精度18、标度6的定点小数。

所以这个字段的实际类型是DECIMAL(18,6),INT64只是它在底层的存储载体。parquet-tools同时展示两者,是为了让你既明白数据代表什么含义,又清楚它是怎么存在磁盘上的,这对排查数据问题、优化存储性能都很有帮助。

内容的提问来源于stack exchange,提问作者Cherry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:15:24