从dask数据框架到bigquery加载巨大的数据



我读了其他类似的线程,并搜索了Google以找到更好的方法,但找不到任何在性能方面可以接受的解决方案。

我有一个非常大的DASK数据框架,其中有100个分区和57列。我想将其移至大Query桌子上。到目前为止,我已经尝试了两种方法:

 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 DataFrame移至GCS,然后将文件移至BigQuery。只需3个小时才能将数据框架移至GCS。只是认为应该有一种更好的方法来做到这一点。有任何想法吗?

这种操作的最佳格式很可能是Parquet(df.to_parquet),然后发送这些文件。您可以尝试使用df.map_partitions使用to_gbq并行发送零件,但是那里的基本过程很慢,我不知道BigQuery在多大程度上允许同时块写入桌子上。/p>

最新更新