使用 StarRocks 从 AWS S3 加载数据:INSERT+FILES()、Broker Load 与 Pipe 完整实战指南

📅 发布时间:2026/9/17 2:52:36
使用 StarRocks 从 AWS S3 加载数据:INSERT+FILES()、Broker Load 与 Pipe 完整实战指南
使用 StarRocks 从 AWS S3 加载数据INSERTFILES()、Broker Load 与 Pipe 完整实战指南【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks本篇指南围绕 StarRocks 数据湖分析中最常见的场景展开将存放在 AWS S3 上的数据高效导入 StarRocks 表。文中以官方提供的千万行用户行为样例数据集s3://starrocks-examples/user-behavior-10-million-rows.parquet为例系统讲解三种加载方式——同步的 INSERTFILES()、异步的 Broker Load、以及面向持续/大规模导入的 Pipe并覆盖 IAM 用户认证准备、建表、加载、进度查询与 Pipe 作业管理。读完本文你将能够根据数据规模、文件格式与业务场景独立选择合适的 S3 加载方案并完成端到端配置与排错。三种加载方式总览StarRocks 为 AWS S3 数据加载提供了三种官方推荐方式同步加载使用 INSERT FILES()表函数异步加载使用 Broker Load持续异步加载使用 Pipe。三种方式各有优势下文将逐一展开。在大多数场景下官方推荐优先使用 INSERTFILES()因为它最简单易用。但需要注意的是INSERTFILES()目前仅支持 Parquet、ORC 和 CSV 三种文件格式如果需要加载 JSON 等其它格式或在加载过程中执行 DELETE 等数据变更则应改用 Broker Load。如果需要一次性加载大量文件、总体数据量巨大例如超过 100 GB 甚至 1 TB官方推荐使用 Pipe——Pipe 会按文件数量或大小拆分加载任务单个文件出错不会拖垮整个作业从而将数据错误导致的重复加载开销降到最低。开始之前的准备准备源数据确保待加载的源数据已正确存放在 S3 bucket 中。同时建议考虑数据与数据库集群的地理位置当 bucket 与 StarRocks 集群位于同一地域时数据传输成本会显著降低。本指南使用官方提供的样例数据集其 S3 路径为s3://starrocks-examples/user-behavior-10-million-rows.parquet。该对象对所有 AWS 认证用户都可读因此使用任意有效的访问凭证即可访问。检查权限你只能以对该 StarRocks 表拥有INSERT 权限的用户身份加载数据。若当前用户没有该权限请参照 GRANT 的说明授予权限语法为GRANT INSERT ON TABLE table_name IN DATABASE database_name TO { ROLE role_name | USER user_identity}收集认证信息本指南中的示例统一使用IAM 用户认证。为确保具备读取 AWS S3 的权限建议先阅读 IAM 用户认证准备并按 IAM 策略参考 创建配置了合适策略的 IAM 用户。简而言之采用 IAM 用户认证时你需要收集以下 AWS 资源信息存放数据的S3 bucket访问 bucket 中特定对象时的S3 object key对象名。注意如果对象存放在子目录中object key 可以包含前缀bucket 所属的AWS region用作访问凭证的access key 和 secret key。关于全部可用认证方式参见 向 AWS 资源认证。从实现层面看这些认证参数最终由 StarRocks BE 端的云凭据工厂统一解析。在 cloud_configuration_factory.h 中可以看到完整的aws.s3.*参数键集合包括aws.s3.region、aws.s3.access_key、aws.s3.secret_key、aws.s3.session_token、aws.s3.iam_role_arn、aws.s3.use_instance_profile、aws.s3.use_web_identity_token_file、aws.s3.enable_ssl、aws.s3.endpoint、aws.s3.enable_path_style_access等它们与 FE 侧 Java 实现中的CloudConfiguration一一对应。这意味着你既可以在 SQL 语句中按本指南的方式显式传入凭据也可以利用实例角色等免 AK/SK 方式。方式一使用 INSERTFILES()INSERTFILES()从 v3.1 起可用目前支持 Parquet、ORC 文件格式并从 v3.3.0 起支持 CSV。INSERTFILES() 的优势FILES()表函数能够根据你指定的路径相关属性直接读取云存储中的文件推断文件内数据的表结构并将文件中的数据以数据行的形式返回。借助FILES()你可以使用 SELECT 直接从 S3 查询数据使用 CREATE TABLE AS SELECTCTAS建表并加载使用 INSERT 将数据加载进已存在的表。典型示例一使用 SELECT 直接查询 S3在建表之前用 SELECTFILES()直接查询 S3 可以很好地预览数据集内容例如不落盘地获取数据集预览查询 min/max 值以决定使用何种数据类型检查是否存在NULL值。下面这条语句查询样例数据集s3://starrocks-examples/user-behavior-10-million-rows.parquetSELECT * FROM FILES ( path s3://starrocks-examples/user-behavior-10-million-rows.parquet, format parquet, aws.s3.region us-east-1, aws.s3.access_key AAAAAAAAAAAAAAAAAAAA, aws.s3.secret_key BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ) LIMIT 3;注意请将上例中的AAA与BBB替换为你的真实凭证。由于该对象对所有 AWS 认证用户可读任意有效的aws.s3.access_key与aws.s3.secret_key均可使用。系统返回如下查询结果---------------------------------------------------------------- | UserID | ItemID | CategoryID | BehaviorType | Timestamp | ---------------------------------------------------------------- | 1 | 2576651 | 149192 | pv | 2017-11-25 01:21:25 | | 1 | 3830808 | 4181361 | pv | 2017-11-25 07:04:53 | | 1 | 4365585 | 2520377 | pv | 2017-11-25 07:49:06 | ----------------------------------------------------------------注意注意返回结果中的列名由 Parquet 文件自身提供。典型示例二使用 CTAS 建表并加载这是上一示例的延续将前面的查询包装进 CREATE TABLE AS SELECTCTAS借助 schema 推断自动完成建表。这意味着 StarRocks 会推断表结构、创建目标表然后把数据加载进表。由于 Parquet 格式本身包含列名使用FILES()表函数配合 Parquet 文件时无需手动指定列名和类型即可建表。注意使用 schema 推断的 CREATE TABLE 语法不允许设置副本数因此需在建表前设置。下面示例针对单副本系统ADMIN SET FRONTEND CONFIG (default_replication_num 1);创建数据库并切换CREATE DATABASE IF NOT EXISTS mydatabase; USE mydatabase;使用 CTAS 创建表并加载样例数据集s3://starrocks-examples/user-behavior-10-million-rows.parquet的数据CREATE TABLE user_behavior_inferred AS SELECT * FROM FILES ( path s3://starrocks-examples/user-behavior-10-million-rows.parquet, format parquet, aws.s3.region us-east-1, aws.s3.access_key AAAAAAAAAAAAAAAAAAAA, aws.s3.secret_key BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB );注意请将上例中的AAA与BBB替换为你的真实凭证。建表完成后可用 DESCRIBE 查看表结构DESCRIBE user_behavior_inferred;系统返回------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------- | UserID | bigint | YES | true | NULL | | | ItemID | bigint | YES | true | NULL | | | CategoryID | bigint | YES | true | NULL | | | BehaviorType | varchar(1048576) | YES | false | NULL | | | Timestamp | varchar(1048576) | YES | false | NULL | | -------------------------------------------------------------查询表以验证数据已成功加载SELECT * from user_behavior_inferred LIMIT 3;返回结果如下说明加载成功---------------------------------------------------------------- | UserID | ItemID | CategoryID | BehaviorType | Timestamp | ---------------------------------------------------------------- | 225586 | 3694958 | 1040727 | pv | 2017-12-01 00:58:40 | | 225586 | 3726324 | 965809 | pv | 2017-12-01 02:16:02 | | 225586 | 3732495 | 1488813 | pv | 2017-12-01 00:59:46 | ----------------------------------------------------------------典型示例三使用 INSERT 加载到已存在表当你希望对目标表做定制例如自定义列数据类型、可空设置或默认值自定义 key 类型与列自定义数据分区与分桶策略时可先手工建表再通过 INSERT 加载。要设计出最高效的表结构需要了解数据将被如何使用以及各列的内容——这部分知识可以通过上文直接查询 S3 文件的方式获得。关于表设计的更多内容参见 StarRocks 表类型与设计。在本例中基于对查询方式与 Parquet 文件内容的了解来建表对 S3 数据集的查询显示Timestamp列内容与 VARCHAR 类型匹配而 StarRocks 支持从 VARCHAR 向 DATETIME 转换因此下面的 DDL 将该列类型改为DATETIME通过查询 S3 数据可以发现数据集中没有NULL值因此 DDL 可将所有列设为非空基于对预期查询类型的了解将排序键与分桶列设置为UserID。你的使用场景可能不同也可以考虑改用或追加ItemID作为排序键。创建数据库并切换CREATE DATABASE IF NOT EXISTS mydatabase; USE mydatabase;手工创建表CREATE TABLE user_behavior_declared ( UserID int(11), ItemID int(11), CategoryID int(11), BehaviorType varchar(65533), Timestamp datetime ) ENGINE OLAP DUPLICATE KEY(UserID) DISTRIBUTED BY HASH(UserID);显示表结构以便与FILES()表函数推断出的结构对比DESCRIBE user_behavior_declared;----------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ----------------------------------------------------------- | UserID | int | YES | true | NULL | | | ItemID | int | YES | false | NULL | | | CategoryID | int | YES | false | NULL | | | BehaviorType | varchar(65533) | YES | false | NULL | | | Timestamp | datetime | YES | false | NULL | | -----------------------------------------------------------提示将你手工创建的表结构与之前FILES()表函数推断出的结构进行对比重点关注数据类型、可空性、key 字段。在生产环境中为更好地控制目标表结构并获取更优查询性能官方推荐手工指定表结构。建表完成后用 INSERT INTO SELECT FROM FILES() 加载INSERT INTO user_behavior_declared SELECT * FROM FILES ( path s3://starrocks-examples/user-behavior-10-million-rows.parquet, format parquet, aws.s3.region us-east-1, aws.s3.access_key AAAAAAAAAAAAAAAAAAAA, aws.s3.secret_key BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB );注意请将上例中的AAA与BBB替换为你的真实凭证。加载完成后查询表验证SELECT * from user_behavior_declared LIMIT 3;返回结果如下说明加载成功---------------------------------------------------------------- | UserID | ItemID | CategoryID | BehaviorType | Timestamp | ---------------------------------------------------------------- | 393529 | 3715112 | 883960 | pv | 2017-12-02 02:45:44 | | 393529 | 2650583 | 883960 | pv | 2017-12-02 02:45:59 | | 393529 | 3715112 | 883960 | pv | 2017-12-02 03:00:56 | ----------------------------------------------------------------查看 INSERT 加载进度从 v3.1 起可以通过 StarRocks Information Schema 中的loads视图查询 INSERT 作业的进度SELECT * FROM information_schema.loads ORDER BY JOB_ID DESC;如果提交了多个加载作业可以按作业关联的LABEL过滤例如SELECT * FROM information_schema.loads WHERE LABEL insert_e3b882f5-7eb3-11ee-ae77-00163e267b60 \G *************************** 1. row *************************** JOB_ID: 10243 LABEL: insert_e3b882f5-7eb3-11ee-ae77-00163e267b60 DATABASE_NAME: mydatabase STATE: FINISHED PROGRESS: ETL:100%; LOAD:100% TYPE: INSERT PRIORITY: NORMAL SCAN_ROWS: 10000000 FILTERED_ROWS: 0 UNSELECTED_ROWS: 0 SINK_ROWS: 10000000 ETL_INFO: TASK_INFO: resource:N/A; timeout(s):300; max_filter_ratio:0.0 CREATE_TIME: 2023-11-09 11:56:01 ETL_START_TIME: 2023-11-09 11:56:01 ETL_FINISH_TIME: 2023-11-09 11:56:01 LOAD_START_TIME: 2023-11-09 11:56:01 LOAD_FINISH_TIME: 2023-11-09 11:56:44 JOB_DETAILS: {All backends:{e3b882f5-7eb3-11ee-ae77-00163e267b60:[10142]},FileNumber:0,FileSize:0,InternalTableLoadBytes:311710786,InternalTableLoadRows:10000000,ScanBytes:581574034,ScanRows:10000000,TaskNumber:1,Unfinished backends:{e3b882f5-7eb3-11ee-ae77-00163e267b60:[]}} ERROR_MSG: NULL TRACKING_URL: NULL TRACKING_SQL: NULL REJECTED_RECORD_PATH: NULL注意INSERT 是同步命令。如果 INSERT 作业仍在运行需要另开一个会话查看其执行状态。方式二使用 Broker LoadBroker Load 是异步加载方式后台进程负责建立到 S3 的连接、拉取数据并把数据存储进 StarRocks。支持的文件格式包括ParquetORCCSVJSON自 v3.2.3 起支持Broker Load 的优势Broker Load 在后台运行客户端无需保持连接作业即可继续执行Broker Load 适合长时运行的作业默认超时时间长达 4 小时除 Parquet 和 ORC 外还支持 CSV 与 JSON 格式JSON 自 v3.2.3 起支持。数据流转流程用户创建加载作业前端FE生成查询计划并将计划分发到后端节点BE或计算节点CNBE/CN 从数据源拉取数据并加载进 StarRocks。典型示例下面创建一张表启动一个从 S3 拉取样例数据集s3://starrocks-examples/user-behavior-10-million-rows.parquet的加载作业并验证加载进度与结果。创建数据库和表创建数据库并切换CREATE DATABASE IF NOT EXISTS mydatabase; USE mydatabase;手工建表建议目标表结构与要加载的 Parquet 文件保持一致的 schemaCREATE TABLE user_behavior ( UserID int(11), ItemID int(11), CategoryID int(11), BehaviorType varchar(65533), Timestamp datetime ) ENGINE OLAP DUPLICATE KEY(UserID) DISTRIBUTED BY HASH(UserID);启动 Broker Load运行以下命令从样例数据集s3://starrocks-examples/user-behavior-10-million-rows.parquet向user_behavior表启动一个 Broker Load 作业LOAD LABEL user_behavior ( DATA INFILE(s3://starrocks-examples/user-behavior-10-million-rows.parquet) INTO TABLE user_behavior FORMAT AS parquet ) WITH BROKER ( aws.s3.enable_ssl true, aws.s3.use_instance_profile false, aws.s3.region us-east-1, aws.s3.access_key AAAAAAAAAAAAAAAAAAAA, aws.s3.secret_key BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ) PROPERTIES ( timeout 72000 );注意请将上例中的AAA与BBB替换为你的真实凭证。该作业由四个主要部分组成LABEL用于查询加载作业状态的字符串LOAD声明源 URI、源数据格式与目标表名BROKER数据源的连接信息PROPERTIES超时时间及其它作用于作业的属性。实现说明示例中aws.s3.enable_ssl true与aws.s3.use_instance_profile false都是显式指定了默认值。根据 cloud_configuration_factory.h 中的定义aws.s3.enable_ssl默认值为true且若要使用 assume role 必须为 trueaws.s3.enable_path_style_access默认值为false而将aws.s3.use_instance_profile设为true则切换为实例配置文件EC2 IAM Role认证此时无需再提供 AK/SK。更详细的语法与参数说明参见 BROKER LOAD。查看加载进度从 v3.1 起可通过 StarRocks Information Schema 中的loads视图查询 Broker Load 作业进度SELECT * FROM information_schema.loads WHERE LABEL user_behavior;下面这条记录显示状态为LOADING进度为 39%。如果看到类似输出请再次执行命令直到状态变为FINISHEDJOB_ID: 10466 LABEL: user_behavior DATABASE_NAME: mydatabase STATE: LOADING PROGRESS: ETL:100%; LOAD:39% TYPE: BROKER PRIORITY: NORMAL SCAN_ROWS: 4620288 FILTERED_ROWS: 0 UNSELECTED_ROWS: 0 SINK_ROWS: 4620288 ETL_INFO: TASK_INFO: resource:N/A; timeout(s):72000; max_filter_ratio:0.0 CREATE_TIME: 2024-02-28 22:11:36 ETL_START_TIME: 2024-02-28 22:11:41 ETL_FINISH_TIME: 2024-02-28 22:11:41 LOAD_START_TIME: 2024-02-28 22:11:41 LOAD_FINISH_TIME: NULL JOB_DETAILS: {All backends:{2fb97223-b14c-404b-9be1-83aa9b3a7715:[10004]},FileNumber:1,FileSize:136901706,InternalTableLoadBytes:144032784,InternalTableLoadRows:4620288,ScanBytes:143969616,ScanRows:4620288,TaskNumber:1,Unfinished backends:{2fb97223-b14c-404b-9be1-83aa9b3a7715:[10004]}} ERROR_MSG: NULL TRACKING_URL: NULL TRACKING_SQL: NULL REJECTED_RECORD_PATH: NULL确认加载作业结束后查询目标表子集以验证数据是否加载成功SELECT * from user_behavior LIMIT 3;返回结果如下说明加载成功---------------------------------------------------------------- | UserID | ItemID | CategoryID | BehaviorType | Timestamp | ---------------------------------------------------------------- | 34 | 856384 | 1029459 | pv | 2017-11-27 14:43:27 | | 34 | 5079705 | 1029459 | pv | 2017-11-27 14:44:13 | | 34 | 4451615 | 1029459 | pv | 2017-11-27 14:45:52 | ----------------------------------------------------------------方式三使用 Pipe自 v3.2 起StarRocks 提供 Pipe 加载方式目前仅支持 Parquet 和 ORC 文件格式。Pipe 非常适合持续数据加载与大规模数据加载。Pipe 的优势以微批次进行大规模数据加载降低数据错误重试成本。借助 PipeStarRocks 可以高效加载大量文件、总体数据量巨大的数据集。Pipe 会根据文件数量或大小自动拆分将加载作业分解为更小的、串行执行的任务。这样单个文件出错不会影响整个加载作业。Pipe 记录每个文件的加载状态方便你定位并修复出错文件。通过减少数据错误导致的重试可以显著降低成本。持续数据加载减少人力投入。Pipe 帮助你将新增或更新的数据文件写入指定位置并持续把新数据加载进 StarRocks。创建 Pipe 作业时指定AUTO_INGEST TRUE后它会持续监控指定路径下数据文件的变化自动将新增或更新的数据加载进目标表。此外Pipe 会执行文件唯一性检查以防止重复加载。加载过程中Pipe 基于文件名与摘要digest检查每个数据文件的唯一性如果某个文件名与摘要组合已被该 Pipe 作业处理过后续所有同名同摘要的文件都会被跳过。注意AWS S3 这类对象存储使用ETag作为文件摘要。每个数据文件的加载状态都会被记录并保存到information_schema.pipe_files视图中。当与该视图关联的 Pipe 作业被删除后该作业已加载文件的记录也会一并删除。Pipe 与 INSERTFILES() 的区别Pipe 作业会根据每个数据文件的大小与行数被拆分为一个或多个事务因此加载过程中用户可以查询中间结果。相比之下INSERTFILES()作业作为一个整体事务执行加载过程中用户无法查看数据。文件加载顺序对每个 Pipe 作业StarRocks 维护一个文件队列并以微批次从中取文件加载。Pipe 不保证文件按上传顺序加载因此较新的数据可能先于较旧的数据被加载。典型示例创建数据库和表创建数据库并切换CREATE DATABASE IF NOT EXISTS mydatabase; USE mydatabase;手工建表建议目标表与要加载的 Parquet 文件保持一致的 schemaCREATE TABLE user_behavior_from_pipe ( UserID int(11), ItemID int(11), CategoryID int(11), BehaviorType varchar(65533), Timestamp datetime ) ENGINE OLAP DUPLICATE KEY(UserID) DISTRIBUTED BY HASH(UserID);启动 Pipe 作业下面的命令启动一个 Pipe 作业将样例数据集s3://starrocks-examples/user-behavior-10-million-rows/加载到user_behavior_from_pipe表同时用到了 Pipe 特有的微批次与持续加载能力。本指南其它示例加载的是包含 1000 万行的单个 Parquet 文件而 Pipe 示例中同一数据集被拆分为57 个独立文件全部存放在一个 S3 文件夹中。注意下面CREATE PIPE命令中的path是 S3 文件夹的 URI且以/*结尾而不是具体的文件名。通过设置AUTO_INGEST并指定文件夹而非单个文件Pipe 作业会轮询该 S3 文件夹新文件一旦加入就被自动摄取。CREATE PIPE user_behavior_pipe PROPERTIES ( AUTO_INGEST TRUE ) AS INSERT INTO user_behavior_from_pipe SELECT * FROM FILES ( path s3://starrocks-examples/user-behavior-10-million-rows/*, format parquet, aws.s3.region us-east-1, aws.s3.access_key AAAAAAAAAAAAAAAAAAAA, aws.s3.secret_key BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB );注意请将上例中的AAA与BBB替换为你的真实凭证。该作业由四个主要部分组成pipe_name管道名称在管道所属数据库内必须唯一INSERT_SQL用于将指定源文件的数据加载到目标表的 INSERT INTO SELECT FROM FILES 语句PROPERTIES一组可选参数用于指定 Pipe 的执行方式包括AUTO_INGEST、POLL_INTERVAL、BATCH_SIZE和BATCH_FILES以key value格式指定。更详细的语法与参数说明参见 CREATE PIPE。查看加载进度在 Pipe 作业所属的当前数据库中使用 SHOW PIPES 查询进度SHOW PIPES WHERE NAME user_behavior_pipe \G返回结果如下提示下面输出中管道处于RUNNING状态。管道会保持RUNNING状态直到你手动停止它。输出同时显示了已加载文件数57与最近一次文件加载时间。*************************** 1. row *************************** DATABASE_NAME: mydatabase PIPE_ID: 10476 PIPE_NAME: user_behavior_pipe STATE: RUNNING TABLE_NAME: mydatabase.user_behavior_from_pipe LOAD_STATUS: {loadedFiles:57,loadedBytes:295345637,loadingFiles:0,lastLoadedTime:2024-02-28 22:14:19} LAST_ERROR: NULL CREATED_TIME: 2024-02-28 22:13:41 1 row in set (0.02 sec)从 StarRocks Information Schema 中的pipes视图查询进度SELECT * FROM information_schema.pipes WHERE pipe_name user_behavior_replica \G返回结果如下提示本指南部分查询以\G而非分号;结尾这会让 MySQL 客户端以垂直格式输出结果。如果你使用 DBeaver 等其它客户端可能需要改用分号;。*************************** 1. row *************************** DATABASE_NAME: mydatabase PIPE_ID: 10217 PIPE_NAME: user_behavior_replica STATE: RUNNING TABLE_NAME: mydatabase.user_behavior_replica LOAD_STATUS: {loadedFiles:1,loadedBytes:132251298,loadingFiles:0,lastLoadedTime:2023-11-09 15:35:42} LAST_ERROR: CREATED_TIME: 9891-01-15 07:51:45 1 row in set (0.01 sec)查看文件状态可以从 StarRocks Information Schema 中的pipe_files视图查询各文件的加载状态SELECT * FROM information_schema.pipe_files WHERE pipe_name user_behavior_replica \G返回结果如下*************************** 1. row *************************** DATABASE_NAME: mydatabase PIPE_ID: 10217 PIPE_NAME: user_behavior_replica FILE_NAME: s3://starrocks-examples/user-behavior-10-million-rows.parquet FILE_VERSION: e29daa86b1120fea58ad0d047e671787-8 FILE_SIZE: 132251298 LAST_MODIFIED: 2023-11-06 13:25:17 LOAD_STATE: FINISHED STAGED_TIME: 2023-11-09 15:35:02 START_LOAD_TIME: 2023-11-09 15:35:03 FINISH_LOAD_TIME: 2023-11-09 15:35:42 ERROR_MSG: 1 row in set (0.03 sec)实现说明pipe_files视图的列定义可在 BE 端源码 schema_pipe_files.cpp 中看到包括DATABASE_NAME、PIPE_ID、PIPE_NAME、FILE_NAME、FILE_VERSION、FILE_ROWS、FILE_SIZE、LAST_MODIFIED、LOAD_STATE、STAGED_TIME、START_LOAD_TIME、FINISH_LOAD_TIME、ERROR_MSG、ERROR_COUNT、ERROR_LINE。查询时 BE 会通过 RPC 从 FE 获取TListPipeFilesParams对应的文件列表再以行形式返回——这解释了为什么你可以在 SQL 层直接过滤pipe_name并拿到每个文件的加载明细。管理 Pipe 作业你可以对已创建的 Pipe 执行修改、暂停/恢复、删除、查询等操作也可以重试加载指定的数据文件。相关命令参见 ALTER PIPE、SUSPEND 或 RESUME PIPE、DROP PIPE、SHOW PIPES 和 RETRY FILE。三种方式选型小结维度INSERTFILES()Broker LoadPipe同步/异步同步单事务加载过程不可见中间结果异步后台运行客户端可断开异步 持续可查询中间结果文件格式Parquet、ORC、CSVv3.3.0 起Parquet、ORC、CSV、JSONv3.2.3 起Parquet、ORC适用场景多数常规场景最易用CTAS/schema 推断/直接查询长时作业、JSON 等格式、加载中需 DELETE 等变更持续增量导入、超大规模100 GB 乃至 1 TB文件批量导入进度查看information_schema.loadsinformation_schema.loadsSHOW PIPES、information_schema.pipes、information_schema.pipe_files无论选择哪种方式请务必提前确认源数据已就绪且与集群尽量同地域、连接用户拥有目标表的 INSERT 权限、以及已按 IAM 用户认证要求收集好 bucket、object key、region 与 AK/SK。在此基础上即可参照上文示例完成从 S3 到 StarRocks 的端到端数据加载。【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考