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 | - |