跳到主要内容
版本: 最新版本-3.5

导入方式

数据导入是指根据您的业务需求,清理和转换来自各种数据源的原始数据,并将生成的数据加载到 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 中可用导入方式的特性和业务场景。

Loading options overview

注意

在以下章节中,“批量”或“批量加载”指的是一次性将指定来源的大量数据加载到 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

数据量: 不固定(数据量根据内存大小而变化。)

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 流式传输数据。

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
  • (批量)INSERT INTO SELECT FROM FILES()(从 v3.1 开始支持)
  • (批量)Broker Load
  • (批量或流式)Pipe(从 v3.2 开始支持)
请参阅从 AWS S3 加载数据
Microsoft Azure Storage
  • (批量)INSERT INTO SELECT FROM FILES()(从 v3.2 开始支持)
  • (批量)Broker Load
请参阅从 Microsoft Azure Storage 加载数据
Google GCS
  • (批量)INSERT INTO SELECT FROM FILES()(从 v3.2 开始支持)
  • (批量)Broker Load
请参阅从 GCS 加载数据
S3 兼容存储(例如 MinIO)
  • (批量)INSERT INTO SELECT FROM FILES()(从 v3.2 开始支持)
  • (批量)Broker Load
请参阅从 MinIO 加载数据

本地文件系统(包括 NAS)

数据源可用的导入选项
本地文件系统(包括 NAS)
  • (批量)Stream Load
  • (批量)Broker Load
请参阅从本地文件系统加载数据

HDFS

数据源可用的导入选项
HDFS
  • (批量)INSERT INTO SELECT FROM FILES()(从 v3.2 开始支持)
  • (批量)Broker Load
  • (批量或流式)Pipe(从 v3.2 开始支持)
请参阅从 HDFS 加载数据
数据源可用的导入选项
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