'Working with Minio and Dask I get s3.ServiceResource' 对象没有属性 'create_client'
'Working with Minio and Dask I get s3.ServiceResource' object has no attribute 'create_client'
正在尝试使用 boto3 从 minio 读取并输入到 Dask
我得到:
's3.ServiceResource' object has no attribute 'create_client'
我设置了 boto:
import botocore, os
from botocore.client import Config
from botocore.session import Session
s3 = boto3.resource('s3',
endpoint_url='https://example.org',
aws_access_key_id=key,
aws_secret_access_key=secret,
config=Config(signature_version='s3v4'),
region_name='us-east-1')
os.environ['S3_USE_SIGV4'] = 'True'
在这一点上,事情似乎很好,一个简单的测试:
for bucket in s3.buckets.all():
print(bucket.name)
将无错误地连接并且 return 我期望的遗愿清单。
但是,使用
迁移到 Dask
from minio import Minio
from minio.error import ResponseError
import io, sys, dask, s3fs
import pandas as pd
import dask.bag as db
import json
df = db.read_text('s3://mybucket/prefa/prefb/*.jsonld', storage_options={"session": s3}).map(json.loads)
结果
...
's3.ServiceResource' object has no attribute 'create_client'
我在这里真的很困惑,正在寻找指导。
谢谢..
“会话”应该是 botocore 会话对象,而不是 boto3 资源。您最好在 client_kwargs 参数中传递各种参数。
df = db.read_text(
's3://mybucket/prefa/prefb/*.jsonld',
storage_options={"client_kwargs":
dict(endpoint_url='https://example.org', ...)}
).map(json.loads)
(请参阅 s3fs 的文档,了解您可以使用 storage_options 传递的完整参数集)
正在尝试使用 boto3 从 minio 读取并输入到 Dask
我得到:
's3.ServiceResource' object has no attribute 'create_client'
我设置了 boto:
import botocore, os
from botocore.client import Config
from botocore.session import Session
s3 = boto3.resource('s3',
endpoint_url='https://example.org',
aws_access_key_id=key,
aws_secret_access_key=secret,
config=Config(signature_version='s3v4'),
region_name='us-east-1')
os.environ['S3_USE_SIGV4'] = 'True'
在这一点上,事情似乎很好,一个简单的测试:
for bucket in s3.buckets.all():
print(bucket.name)
将无错误地连接并且 return 我期望的遗愿清单。
但是,使用
迁移到 Daskfrom minio import Minio
from minio.error import ResponseError
import io, sys, dask, s3fs
import pandas as pd
import dask.bag as db
import json
df = db.read_text('s3://mybucket/prefa/prefb/*.jsonld', storage_options={"session": s3}).map(json.loads)
结果
...
's3.ServiceResource' object has no attribute 'create_client'
我在这里真的很困惑,正在寻找指导。
谢谢..
“会话”应该是 botocore 会话对象,而不是 boto3 资源。您最好在 client_kwargs 参数中传递各种参数。
df = db.read_text(
's3://mybucket/prefa/prefb/*.jsonld',
storage_options={"client_kwargs":
dict(endpoint_url='https://example.org', ...)}
).map(json.loads)
(请参阅 s3fs 的文档,了解您可以使用 storage_options 传递的完整参数集)