从 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>}
。
获取资源访问配置
本文的示例均使用基于 IAM User 的认证方式。为确保您能够顺利访问存储在 AWS S3 中的数据,建议您根据“基于 IAM User 认证鉴权中介绍的准备工作,创建 IAM User、并配置 IAM 策略。
概括来说,如果选择使用基于 IAM User 的认证方式,您需要提前获取以下 AWS 资源信息:
- 数据所在的S3 存储桶
- S3 对象键(或“对象名称”)(只在访问 S3 存储桶中某个特定数据对象时才需要。注意,如果要访问的数据对象保存在子文件夹下,其名称可以包含前缀。)
- S3 存储桶所在的 AWS 地域(Region)
- 作为访问凭证的 Access Key 和 Secret Key
有关 StarRocks 支持的其他认证方式,参见配置 AWS 认证信息。
通过 INSERT+FILES() 导入
该特性从 3.1 版本起支持。当前只支持 Parquet、ORC 和 CSV(自 v3.3.0 起)文件格式。