S3 Load
从 AWS S3 导入
StarRocks 支持通过以下方式从 AWS S3 导入数据:
- 使用 INSERT+
FILES()进行同步导入。 - 使用 Broker Load 进行异步导入。
- 使用 Pipe 进行持续的异步导入。
三种导入方式各有优势,具体将在下面分章节详细阐述。
一般情况下,建议您使用 INSERT+FILES(),更为方便易用。
但是,INSERT+FILES() 当前只支持 Parquet、ORC 和 CSV 文件格式。因此,如果您需要导入其他格式(如 JSON)的数据、或者需要在导入过程中执行 DELETE 等数据变更操作,可以使用 Broker Load。
如果需要导入超大数据(比如超过 100 GB、特别是 1 TB 以上的数据量),建议您使用 Pipe。Pipe 会按文件数量或大小,自动对 目录下的文件进行拆分,将一个大的导入作业拆分成多个较小的串行的导入任务,从而降低出错重试的代价。另外,在进行持续性的数据导入时,也推荐使用 Pipe,它能监听远端存储目录的文件变化,并持续导入有变化的文件数据。
准备工作
准备数据源
确保待导入数据已保存在 S3 存储桶。建议您将数据保存在与 StarRocks 集群同处一个地域(Region)的 S3 存储桶,这样可以降低数据传输成本。
本文中,我们提供了样例数据集 s3://starrocks-examples/user-behavior-10-million-rows.parquet,对所有合法的 AWS 用户开放。您只要配置真实有效的安全凭证,即可访问该数据集。
查看权限
导入操作需要目标表的 INSERT 权限。如果您的用户账号没有 INSERT 权限,请参考 GRANT 给用户赋权,语法为 GRANT INSERT ON TABLE <table_name> IN DATABASE <database_name> TO { ROLE <role_name> | USER <user_identity>}。