Как обрабатывать огромные наборы данных в Kedro - PullRequest
3 голосов
/ 21 февраля 2020

У меня довольно большой (~ 200Gb, ~ 20M строк) необработанный набор данных jsonl. Мне нужно извлечь важные свойства оттуда и сохранить промежуточный набор данных в CSV для дальнейшего преобразования в нечто вроде HDF5, parquet, et c. Очевидно, я не могу использовать JSONDataSet для загрузки набора необработанных данных, потому что он использует pandas.read_json под капотом, а использование pandas для набора данных такого размера звучит как плохая идея. Так что я думаю о том, чтобы читать строку необработанного набора данных построчно, обрабатывать и добавлять обработанные данные построчно в промежуточный набор данных.

Что я не могу понять, так это как сделать это совместимым с AbstractDataSet с методы _load и _save.

PS Я понимаю, что могу вынести это из контекста Kedro и ввести предварительно обработанный набор данных как необработанный, но это как бы разрушает всю идею целостных конвейеров.

1 Ответ

2 голосов
/ 21 февраля 2020

Попробуйте использовать pyspark, чтобы использовать ленивую оценку и пакетное выполнение. SparkDataSet реализован в kedro.contib.io.spark_data_set

Пример конфигурации каталога для jsonl:

your_dataset_name:   
  type: kedro.contrib.io.pyspark.SparkDataSet
  filepath: "\file_path"
  file_format: json
  load_args:
    multiline: True
...