我有一个如下的表达式,其中我试图以分布式方式运行sqlalchemy查询。但是,它引用在connect_args
参数中输入的.pem密钥文件。如何将这个密钥文件上传到dask集群/工作者中,以便它可以运行此sqlalchemy查询?
def execute_query(q):
conn = create_engine(f'presto://{user}:{password}@{host}:{port}/{catalog}/{schema}',
connect_args={'protocol': 'https',
'requests_kwargs': {'verify': key}})
return pd.read_sql(q, conn)
df = dd.from_delayed([
delayed(execute_query)(q) for q in queries])
我尝试使用client.upload_file
将本地文件发送到群集,但它抱怨找不到.pem键的路径
OSError: Could not find a suitable TLS CA certificate bundle, invalid path: hdsj1ptc001.pem
虽然Dask可以为您处理文件的某些操作(请参阅client.upload_file
),但是您应使用自己的方法将敏感文件(例如凭据)分发到工作文件系统上的特定位置。选项包括client.upload_file
,kubernetes机密和许多其他方法。
如果您确定群集的安全性,则可以将密钥文件包含在函数的参数中,然后将其写入函数中的文件(请参见下文),或者在调用允许的情况下,将字节传递直接。
scp