跳转到主要内容

从 S3 存储桶摄取 Parquet 文件

下面介绍使用 S3 表引擎读取 Parquet 文件的一些基础知识。
  • 为 IAM 服务用户创建 access key 和 secret key。 普通登录用户通常无法使用,因为它们可能配置了 MFA 策略。
  • 在策略中设置权限,允许该服务用户访问存储桶和文件夹。
下面是一个非常简单的示例,你可以先用它测试是否能够成功访问你的 Parquet 文件,然后再应用到实际数据。 如果你需要有关创建用户和存储桶的示例,可以参考前两个部分 (创建用户和创建存储桶) : https://clickhouse.com/docs/guides/sre/configuring-s3-for-clickhouse-use/ 我使用了这个示例文件:https://github.com/Teradata/kylo/tree/master/samples/sample-data/parquet 并将其上传到了我的测试存储桶 你可以像下面这样为存储桶设置策略: (根据需要调整,此策略授予的权限比较宽松,但有助于测试。你可以根据需要进一步收紧权限。)
你可以使用这种语法通过 S3 表引擎运行查询: https://clickhouse.com/docs/sql-reference/table-functions/s3/
Parquet 格式的数据类型参考见: https://clickhouse.com/docs/interfaces/formats/#data-format-parquet 要将数据导入原生 ClickHouse 表: 先创建表,例如下面这样 (这里只选了 Parquet 文件中的几列) :
选择 S3 存储桶中的数据,将其插入新表:
验证导入结果:
当你准备导入真实数据时,可以使用一些特殊语法 (如通配符和范围) 来指定存储桶中的文件夹、子文件夹和文件。 我建议先筛选少量目录和文件来测试导入,比如先选定某一年、几个月或某个日期范围进行测试。 除了这里的 path 选项外,新推出的 ** 语法还可以递归匹配所有子目录。 https://clickhouse.com/docs/sql-reference/table-functions/s3/ 例如,假设 path 和存储桶的结构如下: https://your_s3_bucket.s3.amazonaws.com/<your_folder>/<year>/<month>/<day>/<filename>.parquet https://mars-doc-test.s3.amazonaws.com/system_logs/2022/11/01/my-app-logs-0001.parquet 这会获取 2021-2022 年间每个月第 1 天的所有文件。 https://mars-doc-test.s3.amazonaws.com/system_logs/{2021-2022}/**/01/*.parquet
最后修改于 2026年6月12日