首页 > 解决方案 > 将 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 个可用。

标签: pythonpostgresqlpandasamazon-ec2google-bigquery

解决方案


正如 JosMac 的评论所暗示的那样,您的解决方案/方法根本无法适应大型数据集。由于您已经在 AWS/RDS 上运行,因此我认为以下内容会更好:

  1. 将 Postgres 表导出到 S3
  2. 使用 GCS 传输服务将导出从 S3 拉到 GCS
  3. 从 GCS 直接加载到 BigQuery(考虑使用 Cloud Functions 和 Dataflow 自动化此管道)

推荐阅读