导入总览
更新时间:2022-12-01
支持的数据源
PALO 提供多种数据导入方案,可以针对不同的数据源进行选择。
数据源 | 导入方式 |
---|---|
百度对象存储(BOS)、HDFS、AFS | 使用 Broker Load 导入数据 |
本地文件 | 导入本地数据 |
百度消息服务(Kafka) | 订阅 Kafka 日志 |
MySQL、Oracle、PostgreSQL | 通过外部表同步数据 |
通过 JDBC 导入数据 | 使用JDBC同步数据 |
导入 JSON 格式数据 | JSON 格式数据导入说明 |
MySQL binlog | 敬请期待 |
数据导入总体说明
PALO 的数据导入实现有以下共性特征,这里分别介绍,以帮助大家更好的使用数据导入功能
原子性保证
PALO 的每一个导入作业,不论是使用 Broker Load 进行批量导入,还是使用 INSERT 语句进行单条导入,都是一个完整的事务操作。导入事务可以保证一批次内的数据原子生效,不会出现部分数据写入的情况。
同时,一个导入作业都会有一个 Label。这个 Label 是在一个数据库(Database)下唯一的,用于唯一标识一个导入作业。Label 可以由用户指定,部分导入功能也会由系统自动生成。
Label 是用于保证对应的导入作业,仅能成功导入一次。一个被成功导入的 Label,再次使用时,会被拒绝并报错 Label already used
。通过这个机制,可以在 PALO 测做到 At-Most-Once
语义。如果结合上游系统的 At-Least-Once
语义,则可以实现导入数据的 Exactly-Once
语义。
关于原子性保证的典型实践,可以参阅 导入事务和原子性。
同步和异步
导入方式分为同步和异步。对于同步导入方式,返回结果即表示导入成功还是失败。而对于异步导入方式,返回成功仅代表作业提交成功,不代表数据导入成功,需要使用对应的命令查看导入作业的运行状态。
支持的数据格式
不同的导入方式支持的数据格式略有不同。
导入方式 | 支持的格式 |
---|---|
Broker Load | Parquet,ORC,csv,gzip |
Stream Load | csv, gzip, json |
Routine Load | csv, json |