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