Read_json () dask параллельно? - PullRequest
       16

Read_json () dask параллельно?

1 голос
/ 15 апреля 2019

У меня есть код ниже. Он использует распределенный dask для чтения 100 файлов json: (Работников: 5 Ядер: 5 Память: 50,00 ГБ)

  from dask.distributed import Client
  import dask.dataframe as dd

  client = Client('xxxxxxxx:8786')
  df = dd.read_json('gs://xxxxxx/2018-04-18/data-*.json')
  df = client.persist(df)

Когда я запускаю код, я вижу только одного работника, выполняющего задачу read_json (), а затем я получаю ошибку памяти и ошибку WorkerKilled.

Должен ли я вручную прочитать каждый файл и объединить их? или dask должен делать это под капотом?

1 Ответ

0 голосов
/ 19 апреля 2019

Возможно, вы захотите использовать dask.bag вместо dask.dataframe

import json
import dask.bag as db
mybag = db.read_text('gs://xxxxxx/2018-04-18/data-*.json').map(json.loads)

После этого вы можете преобразовать сумку в фрейм данных dask с помощью

mybag.to_dataframe()

Для этого могут потребоваться некоторыедополнительные возможности использования dask.map для правильного построения структуры.

Если ваши данные имеют тип joop hadoop (он же один объект на строку), трюк с мешками все равно будет работать, но вам, возможно, придется работать с отдельными строками.

...