【发布时间】:2020-07-10 02:16:16
【问题描述】:
我正在尝试使用官方 python google-cloud-bigquery 客户端库将相对较大的 pandas 数据框 df 加载到 Google BigQuery 表 table_ref 中。
到目前为止,我已经尝试了两种不同的方法:
1) 直接从内存中的数据帧加载表
client = bigquery.Client()
client.load_table_from_dataframe(df, table_ref)
2) 将数据框保存到 Google Cloud Storage 中 uri parquet_uri 的 parquet 文件中,然后从该文件加载表:
df.to_parquet(parquet_uri)
client = bigquery.Client()
client.load_table_from_uri(parquet_uri, table_ref)
两种方法都会导致相同的错误:
google.api_core.exceptions.BadRequest:400 查询执行期间资源超出:UDF 内存不足。;无法读取 Parquet 文件 [...]。如果文件包含的行太大,或者为查询的列加载的页面的总大小太大,则可能会发生这种情况。
数据框df 有 3 列和 1.84 亿行。保存为 parquet 文件格式时,占用 1.64 GB。
有没有办法使用官方 python 客户端库将这样的数据帧上传到 BigQuery 表中?
提前谢谢你,
乔瓦尼
【问题讨论】:
标签: python pandas google-cloud-platform google-bigquery parquet