我阅读了其他类似的主题并搜索了Google以找到更好的方法,但找不到任何在性能方面可接受的解决方案。
我有一个非常大的dask数据帧,有100个分区和57列。我想把它移到一个大查询表。到目前为止,我尝试了两种方法:
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个小时。只是觉得应该有更好的方法来做到这一点。任何想法?
这种操作的最佳格式很可能是镶木地板(df.to_parquet
),然后发送这些文件。您可以尝试使用df.map_partitions
使用to_gbq
并行发送片段,但基本过程很慢,我不知道BigQuery将允许同时块写入表的程度。