只有在公开文件后将"anon“参数更改为True时,才能加载数据。
df = dd.read_csv('s3://mybucket/some-big.csv', storage_options = {'anon':False})由于显而易见的原因,不建议这样做。如何安全地从S3加载数据?
发布于 2019-01-14 22:50:44
从s3加载数据的后端是s3fs,它有一个关于credentials here的部分,主要指向boto3的文档。
简短的答案是,提供S3凭据的方法有很多,其中一些是自动的(文件放在正确的位置,或环境变量-必须对所有工作人员都可访问,或集群元数据服务)。
或者,您可以在调用中直接提供您的密钥/密码,但这当然意味着您必须信任您的执行平台和工作者之间的通信
df = dd.read_csv('s3://mybucket/some-big.csv', storage_options = {'key': mykey, 'secret': mysecret})可以在API docs中找到使用s3fs时可以在storage_options中传递的参数集。
一般参考http://docs.dask.org/en/latest/remote-data-services.html
发布于 2019-01-15 22:48:02
如果您在您的虚拟私有云(VPC)中,s3可能已经获得了凭证,并且您可以在没有密钥的情况下读取文件:
import dask.dataframe as dd
df = dd.read_csv('s3://<bucket>/<path to file>.csv')如果您没有获得凭证,则可以使用storage_options参数并传递密钥对(密钥和密钥):
import dask.dataframe as dd
storage_options = {'key': <s3 key>, 'secret': <s3 secret>}
df = dd.read_csv('s3://<bucket>/<path to file>.csv', storage_options=storage_options)dask的完整文档可以在here上找到
发布于 2020-01-06 16:49:29
幕后的Dask使用boto3,所以你可以用boto3支持的所有方式来设置你的密钥,例如,基于角色的导出AWS_PROFILE=xxxx,或者通过你的环境变量显式地导出访问密钥和密钥。我建议不要硬编码你的密钥,至少你会因为一个错误而将你的代码暴露给公众。
$ export AWS_PROFILE=your_aws_cli_profile_name或
https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
对于s3,您可以使用通配符匹配来获取多个分块文件
import dask.dataframe as dd
# Given N number of csv files located inside s3 read and compute total record len
s3_url = 's3://<bucket_name>/dask-tutorial/data/accounts.*.csv'
df = dd.read_csv(s3_url)
print(df.head())
print(len(df))https://stackoverflow.com/questions/54177687
复制相似问题