前两天分享了 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,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




