Apache ORC Format 允许读写 ORC 数据。
下面是一个用 Filesystem connector 和 ORC format 创建表格的例子。
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' = 'orc' )
参数 | 是否必选 | 默认值 | 类型 | 描述 |
---|---|---|---|---|
format | 必选 | (none) | String | 指定要使用的格式,这里应该是 'orc'。 |
ORC 格式也支持来源于 Table properties 的表属性。举个例子,可以设置 orc.compress=SNAPPY
来允许 spappy 压缩。
参数 | 默认值 | 描述 |
---|---|---|
orc.compress | ZLIB | high level compression = {NONE, ZLIB, SNAPPY, LZO, LZ4, ZSTD} |
orc.compress.size | 262,144 | compression chunk size |
orc.stripe.size | 67,108,864 | memory buffer in bytes for writing |
orc.row.index.stride | 10,000 | number of rows between index entries |
orc.create.index | true | whether the ORC writer creates indexes as part of the file or not |
orc.bloom.filter.columns | ”” | comma separated list of column names |
orc.bloom.filter.fpp | 0.01 | bloom filter false positive rate |
ORC 格式类型的映射和 Apache Hive 是兼容的。下面的表格列出了 Flink 类型的数据和 ORC 类型的数据的映射关系。
Flink 数据类型 | Orc 物理类型 | Orc 逻辑类型 |
---|---|---|
CHAR | bytes | CHAR |
VARCHAR | bytes | VARCHAR |
STRING | bytes | STRING |
BOOLEAN | long | BOOLEAN |
BYTES | bytes | BINARY |
DECIMAL | decimal | DECIMAL |
TINYINT | long | BYTE |
SMALLINT | long | SHORT |
INT | long | INT |
BIGINT | long | LONG |
FLOAT | double | FLOAT |
DOUBLE | double | DOUBLE |
DATE | long | DATE |
TIMESTAMP | timestamp | TIMESTAMP |
ARRAY
| LIST | |
MAP
| MAP | |
ROW
| STRUCT |