このトピックでは、Parquetフォーマットの使用方法の例を示し、Parquetのパラメーターとデータ型マッピングについて説明します。
制限事項
Parquet フォーマットを使用して、Parquetデータの読み取りと書き込みを行うことができます。
サポートされているオブジェクトストレージサービス(OSS)コネクタのみが、Parquetフォーマットのデータを読み取ることができます。
サンプルコード
次のサンプルコードは、OSSコネクタを使用して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' = 'oss://<bucket>/path',
'format' = 'parquet'
)パラメーター
パラメーター | 必須 | デフォルト値 | データ型 | 説明 |
format | はい | デフォルト値なし | STRING | 使用するように宣言するフォーマット。 Parquetフォーマットを使用する場合は、このパラメーターを parquet に設定します。 |
parquet.utc-timezone | いいえ | false | BOOLEAN | UTCタイムゾーンを使用するかどうかを指定します。 このパラメーターを設定して、エポック時間と LocalDateTime で指定された時間の変換をサポートできます。 有効な値:
|
Parquetフォーマットは、ParquetOutputFormat で提供されているパラメーターもサポートしています。 たとえば、parquet.compression=GZIP を設定して、GZIP圧縮機能を有効にすることができます。
データ型マッピング
Parquetデータ型と Flink SQL データ型のマッピングは、Parquetデータ型と Apache Hive データ型のマッピングと互換性があります。 Parquetデータ型と Flink SQL データ型のマッピングは、次の点で、Parquetデータ型と Apache Spark データ型のマッピングとは異なります。
Flink SQL の TIMESTAMP データ型は、精度に関係なく、Parquet の INT96 データ型にマッピングされます。
Flink SQL の DECIMAL データ型は、精度に基づいて固定長のバイト数を持つParquet配列にマッピングされます。
次の表は、Flink SQL データ型と 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 |