我正在尝试将一个相对较大的pandas
数据框df
使用官方的python google-cloud-bigquery
客户端库加载到Google BigQuery表table_ref
中。
到目前为止,我尝试了两种不同的方法:
1)直接从内存中的数据框加载表格
client = bigquery.Client()
client.load_table_from_dataframe(df, table_ref)
2)将数据框保存为parquet文件,存储在Google Cloud Storage中的uri parquet_uri
位置,并从该文件加载表:
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表中?
提前感谢您的帮助,
Giovanni
job_config.write_disposition
字段从WRITE_APPEND
更改为WRITE_TRUNCATE
,然后在其余的迭代中继续使用WRITE_APPEND
。 - GiovanniAlbertoF