概述
Parquet 为列式存储格式,文件内自带 schema,读取时自动解析字段名与字段类型,无需用户声明。同一任务读取的所有 Parquet 文件须适配同一套 schema。本文介绍 Parquet 格式在 DataBuddy 数据接入中的支持能力、参数设置与类型转换规则。
支持的能力
支持的参数设置
以下为任务级参数,在数据同步模式下配置于任务的读取节点。
参数 | 说明 | 是否必填 | 默认值 |
文件类型 | 选择 PARQUET | 是 | TXT |
压缩格式 | none / deflate / gzip / bzip2 / lz4 / snappy;snappy 仅支持 hadoop-snappy 与 framing-snappy 两种 stream format | 是 | none |
Parquet 自带 schema,字段分隔符、行分隔符、Quote character、跳过表头、字段声明不适用,不在任务中展示。
说明:
Parquet 文件内部的列压缩方式由写入端决定,读取时自动识别;任务中的压缩格式参数需与文件实际的外层压缩方式一致。
支持的类型转换
读取 Parquet 文件自带的 schema 并按下表映射:
Parquet 类型 | 映射后类型 |
INT / SMALLINT | INT |
BIGINT / LONG | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL(p,s) | DECIMAL(p,s) |
BOOLEAN | BOOLEAN |
STRING / VARCHAR / CHAR | STRING |
DATE | DATE |
TIMESTAMP | TIMESTAMP |
BINARY | BINARY |
ARRAY / MAP / STRUCT | STRING(按 JSON 字符串读取) |
映射结果进入字段映射组件,支持手工调整目标字段与类型。
说明:
嵌套类型(ARRAY / MAP / STRUCT)按 JSON 字符串读取,不做结构展开。如需展开嵌套字段,请在目标端进行二次处理。
常见问题
Q:需要手工填写字段名和字段类型吗?
A:不需要。Parquet 文件自带 schema,读取时自动解析字段名与字段类型;如需调整,可在字段映射组件中手工修改目标字段与类型。
Q:嵌套类型如何处理?
A:ARRAY / MAP / STRUCT 按 JSON 字符串读取,不做结构展开。如需展开嵌套字段,请在目标端进行二次处理。
Q:压缩格式参数与 Parquet 文件内部的列压缩有什么关系?
A:Parquet 文件内部的列压缩方式由写入端决定,读取时自动识别;任务中的压缩格式参数需与文件实际的外层压缩方式保持一致。
Q:同一个任务读取多个 schema 不一致的 Parquet 文件会怎样?
A:同一任务读取的所有文件须适配同一套 schema,schema 冲突的记录会进入脏数据处理链路。
Q:为什么没有字段分隔符、行分隔符、Quote character、跳过表头的配置?
A:Parquet 自带 schema,以上按分隔符切分与字段声明的参数不适用,因此不在任务中展示。