Databend stage 介绍
· 阅读需 5 分钟
Databend Stage 在 Databend 是一个重要的概念, 主要用于数据的暂时存储或是团队间数据交换。通过 Stage,用户可以在不同的存储位置和场景下处理数据,方便数据的上传、共享和管理。
Stage 类型 在 Databend 中,Stage 类型主要分为三种:User Stage、Internal Stage 和 External Stage。以下是对这三种 Stage 的详细对比:
特性 | User Stage | Internal Stage | External Stage |
---|---|---|---|
存储位置 | Databend 内部存储 | Databend 内部存储 | 外部云存储(如 S3、Azure) |
创建方式 | 默认自带 | 手动创建,不需要带connconnect | 手动创建,需要指定 connection |
访问权限 | 仅限用户本人 | 可共享给其他用户或角色 | 可共享给其他用户或角色 |
Drop stage | 不允许 | 删除对应的 stage 名字,清理对应的位置的文件 | 只会删除 stage 名字,对应路径下的文件会保留 |
文件上传 | 需要上传文件到 Databend | 需要上传文件到 Databend | 无需上传文件,主要用读取该位置的数据,或是卸载数据到该位置 |
使用场景 | 用户私有文件 | 团队共享文件 | 外部数据加载/卸载 |
访问路径 | @~/ | @stage_name/ | @stage_name/ |
名字自定义 | 不支持 | 支持 | 支持 |
Stage 的使用方法
创建 Stage:
- User Stage: 默认会为每位用户自动创建,无需手动操作。
- Internal Stage: 用户可以通过执行 CREATE STAGE stage_name; 来创建内部 Stage。
- External Stage: 用户需要使用来创建,需指定连接信息,如。
CREATE STAGE mystage 's3://myupload'
CONNECTION=(
endpoint_url='http://127.0.0.1:9000',
access_key_id='minioadmin',
secret_access_key='minioadmin',
region='us-east-1'
);
访问与权限管理:
User Stage 仅限用户本人访问, 私密空间,管理员也无法查看
Internal Stage 和 External Stage 可以共享给其他用户或角色。
文件上传与处理:
- User Stage 和 Internal Stage 需要用户手动上传文件到 Databend (对象存储需要支持 presign 功能)
- External Stage 则可以直接读取外部云存储中的数据,无需手动上传,可以直接利用 s3 sdk 或是 opendal 直接写对应的 bucket .
删除 Stage:
删除操作在不同的 Stage 类型中有所区别:
- User Stage 不允许删除。
- Internal Stage 删除时会清理对应位置的文件。
- External Stage 只会删除 Stage 名称,实际存储的数据文件将会保留, 感觉相当删除了一个连接。
基本使用
构建数据参考: Databend 快速入门
数据读取
COPY INTO t_person FROM @mystage PATTERN='.*[.]csv' FILE_FORMAT=(TYPE=CSV, SKIP_HEADER=1);
数据卸载
copy into @mystage/t_person/ from (select * from t_person) file_format=(type=parquet);
查看 stage 数据
list @~;
table 方式查看 stage 相关数据
SELECT * FROM list_stage(location => '@mystage');
如果 stage 下文件特别多,建议把上面的结构存到一个表中去分析,更多使用参考:
https://docs.databend.cn/sql/sql-functions/table-functions/list-stage
删除 stage 数据
remove @~;
小结
Databend Stage 为 Databend 提供了灵活的数据管理和交换机制,用户可以根据自己的需求选择合适的 Stage 类型来优化数据处理流程。了解不同 Stage 之间的差异和使用场景,有助于用户更高效地利用 Databend 进行数据分析和处理。
💬 社区支持
有问题与我们的团队联系:Slack微信: 82565387