You need to enable JavaScript to run this app.
导航
Parquet
最近更新时间:2024.08.20 17:38:32首次发布时间:2024.08.20 17:38:32

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

如何创建基于 Parquet 格式的表

以下为用 Filesystem 连接器和 Parquet 格式创建表的示例:

CREATE 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' = '/tmp/user_behavior',
 'format' = 'parquet'
)

Format 参数

参数

是否必选

默认值

类型

描述

format

必选

(none)

String

指定使用的格式,此处应为"parquet"。

parquet.utc-timezone

注意:仅适用于 Flink1.11 版本

可选

false

Boolean

使用 UTC 时区或本地时区在纪元时间和 LocalDateTime 之间进行转换。Hive 0.x/1.x/2.x 使用本地时区,但 Hive 3.x 使用 UTC 时区。

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

数据类型映射

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

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

下表列举了 Flink 中的数据类型与 Parquet 中的数据类型的映射关系。

Flink 数据类型

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

注意:仅适用于 Flink1.16 版本

LIST

MAP

注意:仅适用于 Flink1.16 版本

MAP

ROW

注意:仅适用于 Flink1.16 版本

STRUCT