前两天分享了 Superset 如何通过 DuckDB 访问 S3 上的数据集, 有网友反映,每次都要同时执行一长串的参数设置以及加载插件,非常麻烦,和 duckdb-engine 作者沟通后, 从 duckdb-engine 0.6.1 开始可以把设置(包括 httpfs 插件的自动加载)放到 Engine Parameters 中了,如果你有多个 S3 数据源,可以设置多个 DuckDB 数据库连接,每个连接配置一个 S3 的设置。
有兴趣看下视频版的,可以访问 B 站:https://www.bilibili.com/video/av557441848/
本地 minio 的参数设置
{
"connect_args": {
"preload_extensions": [
"httpfs"
],
"config": {
"s3_endpoint": "127.0.0.1:9900",
"s3_access_key_id": "minioadmin",
"s3_secret_access_key": "minioadmin",
"s3_url_style": "path",
"s3_use_ssl": false
}
}
}
Minio Play 的参数设置
{
"connect_args": {
"preload_extensions": [
"httpfs"
],
"config": {
"s3_endpoint": "play.min.io:9000",
"s3_access_key_id": "Q3AM3UQ867SPQQA43P2F",
"s3_secret_access_key": "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
"s3_url_style": "path",
"s3_use_ssl": true,
"s3_region":"us-east-1"
}
}
}
duckdb-engine 0.6.1 版本支持 "s3_use_ssl": false
, 0.6.0 版本需要 "s3_use_ssl": "false"
另附上Python代码版本的使用方法,
from sqlalchemy import create_engine
import pandas as pd
connect_args={
"preload_extensions": ["httpfs"],
"config": {
"s3_endpoint":"127.0.0.1:9900",
"s3_access_key_id":"minioadmin",
"s3_secret_access_key":"minioadmin",
"s3_url_style":"path",
"s3_use_ssl":False
}
}
engine = create_engine("duckdb:///"
,connect_args=connect_args)
def test_s3():
sql = "select count(*) from 's3://ontime/*.parquet'"
df = pd.read_sql(sql, engine)
print(df)
test_s3()
有兴趣看下视频版的,可以访问 B 站:https://www.bilibili.com/video/av557441848/
欢迎关注公众号
有兴趣加群讨论数据挖掘和分析的朋友可以加我微信(witwall),暗号:入群
也欢迎投稿!
原文始发于微信公众号(alitrack):Superset 访问 S3上的数据集更方便了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62706.html