将大量数据从dask数据帧加载到bigquery

时间:2019-03-14 00:36:08

标签: python google-bigquery bigdata dask dask-distributed

我阅读了其他类似的主题,并搜索Google以找到更好的方法,但是找不到任何可以接受的解决方案。

我有一个非常大的dask数据框,其中包含100个分区和57列。我想将其移至bigquery表。到目前为止,我已经尝试了两种方法:

 dd.compute() # to do compute and then use pandas gbq
 pd.io.gbq.to_gbq(df, BQ_DATASET_NAME_TEMP + "." + BQ_EVENT_TEMP_TB, BQ_PROJECT_NAME, if_exists='append')

这需要很长时间(超过2个小时)

我也尝试使用:

dd.to_json('gs://dask_poc/2018-04-18/output/data-*.json')

将dask数据框移至GCS,然后将文件移至bigquery。仅将数据框移动到GCS需要3个小时。只是认为应该有一种更好的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您最好的格式是镶木地板(df.to_parquet),然后发送这些文件。您可以尝试使用df.map_partitions来使用to_gbq并行发送片段,但是那里的基本过程很慢,而且我不知道BigQuery在多大程度上允许同时块写入表。