菜单

文件类型数据源的文件格式

 

适用范围:文件类型数据源(HDFS 文件数据源、FTP/SFTP 文件数据源)。数据在存储侧按「库(database)→ 表(table)」两级目录组织,表内支持用分区目录存放数据,读取时按分区路径读取目录下的数据文件。

1. 目录结构

基础路径(数据源连接上配置的根目录)下,目录层级固定为:

<基础路径>/                           在数据源配置时,作为基础路径设置
└── <database>                第一层:库目录,目录名即库名
    └── <table>               第二层:表目录,一个表对应一个目录,目录名即表名
        ├── <数据文件>         无分区时,数据文件直接放在表目录下
        └── <partition>/      有分区时,分区目录(可按分区字段多层嵌套)
            └── <数据文件>
            └── _SUCCESS    表示该分区的文件已经就绪

示例:

/data/
└── mydb/                              -- database: mydb
    └── orders/                        -- table: orders
        ├── orders.csv                 -- 无分区:数据文件直接放在表目录
        └── pt_date=2024-03-13/        -- 分区目录
            └── part-00001.parquet     -- 数据文件
            └── _SUCCESS                   -- 数据就绪标识,表示该分区的文件已经就绪,注意必须大写

约定:

  • 第一层目录即库(database),第二层目录即表(table),系统按目录展示库、表列表。
  • 一个库目录下可包含多个表目录。
  • 数据文件只放在表目录或其分区目录内;库目录下、表目录之外的其他层级不会被当作数据。
  • 当分区文件完全写入后,数据文件同级 touch 一个空文件 _SUCCESS ,用于标识该分区的文件已经完整。

2. 分区(partition)结构

  • 分区目录命名固定为 分区字段名=分区值,例如 pt_date=2024-03-13
  • 支持多级分区:按分区字段的顺序逐层嵌套目录。例如分区字段为 pt_datehour 时,目录结构为:
    pt_date=2024-03-13/hour=20/
  • 表无分区字段时,数据文件直接放在表目录下(等价于整表只有根目录一个分区)。
  • 指定读取某一分区时,将各层 分区字段=分区值 转换为对应目录层级。例如读取分区:
    ["pt_date=2024-03-13,hour=20"]

    等价于读取路径:

    <基础路径>/<database>/<table>/pt_date=2024-03-13/hour=20
     
  • 分区字段名需以字母或下划线开头,可包含字母、数字、下划线;分区值无额外约束。
  • 表目录下未按 字段=值 命名的子目录不会被识别为分区目录。
  • 分区目录名以 . 开头的目录会被忽略。

分区字段(按顺序)

目录结构

pt_date(单分区)

pt_date=2024-03-13/

pt_date, hour(多级分区)

pt_date=2024-03-13/hour=20/

3. 文件类型与文件后缀名

文件类型(配置值)与可读取的数据文件后缀对应关系如下:

文件类型

数据文件后缀

说明

text

.txt.csv

按文本行读取,需配置字段/列解析

csv

.txt.csv

按文本行读取,支持配置分隔符、跳过表头行

json

.txt.csv.json.jsonl

按文本行读取,支持配置列解析

schema_free

.txt.csv.json.jsonl

文本格式,每行是一个客户直接上报神策 8106 的 json

parquet

.parquet.parq.pq

列结构与类型由文件自带

orc

.orc

列结构与类型由文件自带

约定:

  • 后缀名大小写不敏感,.CSV.csv 等价。
  • 任务按配置的文件类型筛选数据文件:只读取后缀匹配表内文件,目录中其他文件不参与读取。
  • text / csv / json 为文本类格式,按行读取,支持配置跳过表头行与自定义列 schema;parquet / orc 为自描述二进制列式格式,schema 直接从文件读取,不支持自定义列 schema。
  • 文本文件编码为 UTF-8。
上一个
Schema 配置
下一个
元数据管理
最近修改: 2026-09-14