本文为您介绍Parquet格式的使用方法和类型映射。

使用限制

  • Parquet格式允许读写Parquet数据。

  • 仅对象存储OSS连接器支持读取Parquet格式的数据。

使用示例

利用OSS和Parquet格式创建表的示例如下。

CREATE TEMPORARY TABLE user_behavior (
  user_id BIGINT,
  item_id BIGINT,
  category_id BIGINT,
  behavior STRING,
  ts TIMESTAMP(3),
  dt STRING
) PARTITIONED BY (dt) WITH (
 'connector' = 'filesystem',
 'path' = 'oss://<bucket>/path',
 'format' = 'parquet'
)

配置选项

参数

是否必选

默认值

类型

说明

format

none

String

声明使用的格式。使用Parquet格式时,参数取值为parquet。

parquet.utc-timezone

false

Boolean

使用UTC时区或本地时区在纪元时间和 LocalDateTime之间进行转换。

参数取值如下:

  • true:使用UTC时区进行转换。

  • false:使用本地时区进行转换。

Parquet格式也支持ParquetOutputFormat的配置。 例如,可以配置parquet.compression=GZIP来开启gzip压缩。

类型映射

目前,Parquet格式类型映射与Apache Hive兼容,但与Apache Spark有所不同:

  • Timestamp:不论精度,映射timestamp类型至int96。

  • Decimal:根据精度,映射decimal类型至固定长度字节的数组。

Flink与Parquet的数据类型的映射关系如下。

Flink SQL类型

Parquet类型

Parquet逻辑类型

CHAR / VARCHAR / STRING

BINARY

UTF8

BOOLEAN

BOOLEAN

-

BINARY / VARBINARY

BINARY

-

DECIMAL

FIXED_LEN_BYTE_ARRAY

DECIMAL

TINYINT

INT32

INT_8

SMALLINT

INT32

INT_16

INT

INT32

-

BIGINT

INT64

-

FLOAT

FLOAT

-

DOUBLE

DOUBLE

-

DATE

INT32

DATE

TIME

INT32

TIME_MILLIS

TIMESTAMP

INT96

-

ARRAY

-

LIST

MAP

-

MAP

ROW

-

STRUCT