ローカル コンピューターから実行するのに十分なメモリがないため、セットアップした dask クラスターを使用して、この sqlalchemy クエリを実行および並列化しようとしています。
私のコードは次のとおりです-これがこれを達成するための最良の方法であるかどうかはわかりません:
from dask.distributed import Client
import dask.dataframe as dd
from dask.delayed import delayed
client = Client(<IP Address>)
recent_dates = ['2020-04-24', '2020-04-23', 2020-04-22']
query = """SELECT * FROM table WHERE date = '%s'"""
queries = [query.format(d) for d in recent_dates]
from sqlalchemy.engine import create_engine
conn = create_engine(f'presto://{user}:{password}@{host}:{port}/{catalog}/{schema}',
connect_args={'protocol': 'https',
'requests_kwargs': {'verify': key}})
con = engine.connect()
df = dd.from_delayed([delayed(pd.read_sql_query)(q, conn) for q in queries])
次のエラーが表示されます。
TypeError: can't pickle _thread.RLock objects