导入方式
数据导入是指根据您的业务需求,清理和转换来自各种数据源的原始数据,并将生成的数据加载到 StarRocks 中,以方便分析的过程。
StarRocks 提供了多种数据导入选项
- 导入方法:Insert、Stream Load、Broker Load、Pipe、Routine Load 和 Spark Load
- 生态工具:StarRocks Connector for Apache Kafka®(简称 Kafka connector)、StarRocks Connector for Apache Spark™(简称 Spark connector)、StarRocks Connector for Apache Flink®(简称 Flink connector)以及其他工具,例如 SMT、DataX、CloudCanal 和 Kettle Connector
- API:Stream Load 事务接口
这些选项各有优势,并支持其自身的一组数据源系统进行提取。
本主题概述了这些选项,以及它们之间的比较,以帮助您根据数据源、业务场景、数据量、数据文件格式和导入频率确定您选择的导入选项。
导入方式介绍
本节主要介绍 StarRocks 中可用导入方式的特性和业务场景。
在以下章节中,“批量”或“批量加载”指的是一次性将指定来源的大量数据加载到 StarRocks 中,而“流式”指的是实时连续加载数据。
导入方法
Insert
业务场景
- INSERT INTO VALUES:用少量数据追加到内部表。
- INSERT INTO SELECT
-
INSERT INTO SELECT FROM
<table_name>
:将对内部表或外部表的查询结果追加到表中。 -
INSERT INTO SELECT FROM FILES():将对远程存储中的数据文件进行查询的结果追加到表中。
注意对于 AWS S3,从 v3.1 开始支持此功能。对于 HDFS、Microsoft Azure Storage、Google GCS 和 S3 兼容存储(例如 MinIO),从 v3.2 开始支持此功能。
-
文件格式
- INSERT INTO VALUES: SQL
- INSERT INTO SELECT
- INSERT INTO SELECT FROM
<table_name>
:StarRocks 表 - INSERT INTO SELECT FROM FILES():Parquet 和 ORC
- INSERT INTO SELECT FROM
数据量: 不固定(数据量根据内存大小而变化。)
Stream Load
业务场景: 从本地文件系统批量加载数据。
文件格式: CSV 和 JSON
数据量: 10 GB 或更少
Broker Load
业务场景
- 从 HDFS 或云存储(如 AWS S3、Microsoft Azure Storage、Google GCS 和 S3 兼容存储(如 MinIO))批量加载数据。
- 从本地文件系统或 NAS 批量加载数据。
文件格式: CSV、Parquet、ORC 和 JSON(从 v3.2.3 开始支持)
数据量: 几十 GB 到数百 GB
Pipe
业务场景: 从 HDFS 或 AWS S3 批量加载或流式加载数据。
从 v3.2 开始支持此加载方法。
文件格式: Parquet 和 ORC
数据量: 100 GB 到 1 TB 或更多
Routine Load
业务场景: 从 Kafka 流式传输数据。
文件格式: CSV、JSON 和 Avro(从 v3.0.1 开始支持)
数据量: MB 到 GB 的数据(作为小批量)
Spark Load
业务场景: 使用 Spark 集群批量加载存储在 HDFS 中的 Apache Hive™ 表的数据。
文件格式: CSV、Parquet(从 v2.0 开始支持)和 ORC(从 v2.0 开始支持)
数据量: 几十 GB 到 TB
生态工具
Kafka connector
业务场景: 从 Kafka 流式传输数据。
Spark connector
业务场景: 从 Spark 批量加载数据。
Flink connector
业务场景: 从 Flink 流式传输数据。
SMT
业务场景: 通过 Flink 从 MySQL、PostgreSQL、SQL Server、Oracle、Hive、ClickHouse 和 TiDB 等数据源加载数据。
DataX
业务场景: 在各种异构数据源之间同步数据,包括关系数据库(例如 MySQL 和 Oracle)、HDFS 和 Hive。
CloudCanal
业务场景: 将数据从源数据库(例如 MySQL、Oracle 和 PostgreSQL)迁移或同步到 StarRocks。
Kettle Connector
业务场景: 与 Kettle 集成。通过将 Kettle 强大的数据处理和转换功能与 StarRocks 的高性能数据存储和分析能力相结合,可以实现更灵活高效的数据处理工作流程。
API
Stream Load 事务接口
业务场景: 为运行的事务实现两阶段提交 (2PC),以加载来自 Flink 和 Kafka 等外部系统的数据,同时提高高并发流式加载的性能。从 v2.4 开始支持此功能。
文件格式: CSV 和 JSON
数据量: 10 GB 或更少
导入方式选择
本节列出了常用数据源可用的加载选项,帮助您选择最适合您情况的选项。
对象存储
数据源 | 可用的导入选项 |
---|---|
AWS S3 |
|
Microsoft Azure Storage |
|
Google GCS |
|
S3 兼容存储(例如 MinIO) |
|
本地文件系统(包括 NAS)
数据源 | 可用的导入选项 |
---|---|
本地文件系统(包括 NAS) |
|
HDFS
数据源 | 可用的导入选项 |
---|---|
HDFS |
|
Flink、Kafka 和 Spark
数据源 | 可用的导入选项 |
---|---|
Apache Flink® | |
Apache Kafka® | 注意 如果源数据需要多表联接和提取、转换和加载 (ETL) 操作,则可以使用 Flink 读取和预处理数据,然后使用Flink connector将数据加载到 StarRocks 中。 |
Apache Spark™ |
数据湖
数据源 | 可用的导入选项 |
---|---|
Apache Hive™ |
|
Apache Iceberg | (批量)创建一个 Iceberg catalog,然后使用INSERT INTO SELECT FROM <table_name> 。 |
Apache Hudi | (批量)创建一个 Hudi catalog,然后使用INSERT INTO SELECT FROM <table_name> 。 |
Delta Lake | (批量)创建一个 Delta Lake catalog,然后使用INSERT INTO SELECT FROM <table_name> 。 |
Elasticsearch | (批量)创建一个 Elasticsearch catalog,然后使用INSERT INTO SELECT FROM <table_name> 。 |
Apache Paimon | (批量)创建一个 Paimon catalog,然后使用INSERT INTO SELECT FROM <table_name> 。 |
请注意,StarRocks 从 v3.2 开始提供统一 Catalog,以帮助您将来自 Hive、Iceberg、Hudi 和 Delta Lake 数据源的表作为统一数据源处理,无需摄取。
内部和外部数据库
数据源 | 可用的导入选项 |
---|---|
StarRocks | (批量)创建一个StarRocks 外部表,然后使用INSERT INTO VALUES插入一些数据记录或INSERT INTO SELECT FROM <table_name> 插入表的数据。注意 StarRocks 外部表仅支持数据写入。它们不支持数据读取。 |
MySQL |
|
其他数据库,例如 Oracle、PostgreSQL、SQL Server、ClickHouse 和 TiDB |
|