python - 将 PostgreSQL 加速到 BigQuery
问题描述
我想将当前存储在 postGreSQL 中的一些数据上传到 Google Bigquery,以查看这两种工具的比较情况。
要移动数据有很多选择,但迄今为止我发现的最用户友好的(对我而言)一个利用了 python pandas 的强大功能。
sql = "SELECT * FROM {}".format(input_table_name)
i = 0
for chunk in pd.read_sql_query(sql , engine, chunksize=10000):
print("Chunk number: ",i)
i += 1
df.to_gbq(destination_table="my_new_dataset.test_pandas",
project_id = "aqueduct30",
if_exists= "append" )
但是这种方法相当慢,我想知道我必须有哪些选择来加快速度。我的表有 1100 万行和 100 列。
postGreSQL 在 AWS RDS 上,我从 Amazon EC2 实例调用 python。两者都大而快。我目前没有使用多个处理器,尽管有 16 个可用。
解决方案
正如 JosMac 的评论所暗示的那样,您的解决方案/方法根本无法适应大型数据集。由于您已经在 AWS/RDS 上运行,因此我认为以下内容会更好:
- 将 Postgres 表导出到 S3
- 使用 GCS 传输服务将导出从 S3 拉到 GCS
- 从 GCS 直接加载到 BigQuery(考虑使用 Cloud Functions 和 Dataflow 自动化此管道)