以下示例演示如何使用 Snowflake ↗ 连接并查询 R2 Data Catalog 中的数据(只读)。
- 注册 Cloudflare 账户 ↗。
- 创建 R2 存储桶并启用数据目录。
- 创建 R2 API 令牌,并授予 R2 和数据目录权限。
- 拥有 Snowflake ↗ 账户,并具备创建 external volume 和 catalog integration 的必要权限。
在 Snowflake SQL worksheet ↗ 或 notebook ↗ 中运行以下命令:
-- 创建数据库(如果尚未创建)以组织您的外部数据
CREATE DATABASE IF NOT EXISTS r2_example_db;
-- 创建指向您的 R2 存储桶的外部卷 (external volume)
CREATE OR REPLACE EXTERNAL VOLUME ext_vol_r2
STORAGE_LOCATIONS = (
(
NAME = 'my_r2_storage_location'
STORAGE_PROVIDER = 'S3COMPAT'
STORAGE_BASE_URL = 's3compat://<bucket-name>'
CREDENTIALS = (
AWS_KEY_ID = '<access_key>'
AWS_SECRET_KEY = '<secret_access_key>'
)
STORAGE_ENDPOINT = '<account_id>.r2.cloudflarestorage.com'
)
)
ALLOW_WRITES = FALSE;
-- 为 R2 Data Catalog 创建目录集成 (catalog integration)(只读)
CREATE OR REPLACE CATALOG INTEGRATION r2_data_catalog
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'default'
REST_CONFIG = (
CATALOG_URI = '<catalog_uri>'
CATALOG_NAME = '<warehouse_name>'
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<token>'
)
ENABLED = TRUE;
-- 在您选择的 Snowflake 数据库中创建 Apache Iceberg 表
CREATE ICEBERG TABLE my_iceberg_table
CATALOG = 'r2_data_catalog'
EXTERNAL_VOLUME = 'ext_vol_r2'
CATALOG_TABLE_NAME = 'my_table'; -- 您的 R2 数据目录中现有表的名称
-- 查询您的 Iceberg 表
SELECT * FROM my_iceberg_table;