Загрузить огромные данные из dask dataframe в bigquery - PullRequest
0 голосов
/ 14 марта 2019

Я читал другие похожие темы и искал в 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 dataframe в GCS, а затем переместить файлы в bigquery.Перемещение только кадра данных в GCS занимает 3 часа.Просто подумал, что должен быть лучший способ сделать это.Есть мысли?

1 Ответ

0 голосов
/ 16 марта 2019

Лучшим форматом для такого рода операций, скорее всего, является паркет (df.to_parquet), а затем отправьте эти файлы. Вы можете попытаться использовать df.map_partitions для параллельной отправки фрагментов, используя to_gbq, но основная процедура там медленная, и я не знаю, в какой степени BigQuery разрешит одновременную запись блоков в таблица.

...