4.1.1 导入概览¶
Apache Doris 提供了多种导入和集成数据的方法,您可以使用合适的导入方式从各种源将数据导入到数据库中。 Apache Doris 提供的数据导入方式可以分为四类:
-
实时写入:应用程序通过
HTTP或者JDBC实时写入数据到Doris表中,适用于需要实时分析和查询的场景。-
极少量数据(
5分钟一次)时可以使用JDBC INSERT写入数据。 -
并发较高或者频次较高(大于
20并发或者1分钟写入多次)时建议打开Group Commit,使用JDBC INSERT或者Stream Load写入数据。 -
吞吐较高时推荐使用
Stream Load通过HTTP写入数据。
-
-
流式同步:通过实时数据流(如
Flink、Kafka、事务数据库)将数据实时导入到Doris表中,适用于需要实时分析和查询的场景。-
可以使用
Flink Doris Connector将Flink的实时数据流写入到Doris表中。 -
可以使用
Routine Load或者Doris Kafka Connector将Kafka的实时数据流写入到Doris表中。Routine Load方式下,Doris会调度任务将Kafka中的数据拉取并写入Doris中,目前支持csv和json格式的数据。Kafka Connector方式下,由Kafka将数据写入到Doris中,支持avro、json、csv、protobuf格式的数据。 -
可以使用
Flink CDC或Datax将事务数据库的CDC数据流写入到Doris中。
-
-
批量导入:将数据从外部存储系统(如
S3、HDFS、本地文件、NAS)批量加载到Doris表中,适用于非实时数据导入的需求。-
可以使用
Broker Load将S3和HDFS中的文件写入到Doris中。 -
可以使用
INSERT INTO SELECT将S3、HDFS和NAS中的文件同步写入到Doris中,配合JOB可以异步写入。 -
可以使用
Stream Load或者Doris Streamloader将本地文件写入Doris中。
-
-
外部数据源集成:通过与外部数据源(如
Hive、JDBC、Iceberg等)的集成,实现对外部数据的查询和部分数据导入到Doris表中。-
可以创建
Catalog读取外部数据源中的数据,使用INSERT INTO SELECT将外部数据源中的数据同步写入到Doris中,配合JOB可以异步写入。 -
可以使用
X2Doris将其他AP系统的数据迁移到Doris中。
-
Doris 的每个导入默认都是一个隐式事务,事务相关的更多信息请参考事务。
1 导入方式快速浏览¶
Doris 的导入主要涉及数据源、数据格式、导入方式、错误数据处理、数据转换、事务多个方面。您可以在如下表格中快速浏览各导入方式适合的场景和支持的文件格式。
| 导入方式 | 使用场景 | 支持的文件格式 | 单次导入数据量 | 导入模式 |
|---|---|---|---|---|
| Stream Load | 导入本地文件或者应用程序写入 | csv、json、parquet、orc | 小于10GB | 同步 |
| Broker Load | 从对象存储、HDFS等导入 | csv、json、parquet、orc | 数十GB到数百 GB | 异步 |
| INSERT INTO VALUES | 通过JDBC等接口导入 | SQL | 简单测试用 | 同步 |
| INSERT INTO SELECT | 可以导入外部表或者对象存储、HDFS中的文件 | SQL | 根据内存大小而定 | 同步 |
| Routine Load | 从kakfa实时导入 | csv、json | 微批导入 MB 到 GB | 异步 |
| MySQL Load | 从本地数据导入 | csv | 小于10GB | 同步 |
| Group Commit | 高频小批量导入 | 根据使用的导入方式而定 | 微批导入KB | - |