Как создать dask dataframe из файла CSV, хранящегося в HDFS (много файлов частей)

Я пытаюсь создать кадр данных dask из файла HDFS (csv). CSV-файл, хранящийся в HDFS, содержит множество файлов деталей.

При вызове API read_csv:

dd.read_csv("hdfs:<some path>/data.csv")

Возникает следующая ошибка:

OSError: Could not open file: <some path>/data.csv, mode: rb Path is not a file: <some path>/data.csv

На самом деле /data.csv — это каталог, содержащий множество файлов деталей. Я не уверен, есть ли какой-то другой API для чтения таких hdfs csv.


person Santosh Kumar    schedule 28.09.2017    source источник
comment
Можете ли вы убедиться, что ваша строка пути выглядит как "hdfs:/some/path/data.csv/*.csv" (обратите внимание на «/» после двоеточия и шаблона глобуса)?   -  person mdurant    schedule 29.09.2017
comment
Спасибо, мудрант, шаблон глобуса сработал :)   -  person Santosh Kumar    schedule 29.09.2017
comment
@mdurant: Если я могу спросить в самой этой теме, dask не может читать паркетные (на hdfs и не имеет метаданных) файлы, сохраненные spark. Есть ли какое-либо решение для этого.   -  person Santosh Kumar    schedule 29.09.2017
comment
Да, вы можете: явно передать список файлов, например, из запущенного hdfs.glob('/path/parquet/*.parq'). Кроме того, у Spark есть возможность записать файл метаданных.   -  person mdurant    schedule 29.09.2017


Ответы (1)


Dask не знает, из каких файлов вы собираетесь читать, когда вы передаете только имя каталога. Вы должны передать строку glob, используемую для поиска файлов, или явный список файлов, например,

df = dd.read_csv("hdfs:///some/path/data.csv/*.csv")

Обратите внимание на '/' после двоеточия: все пути hdfs начинаются таким образом.

person mdurant    schedule 29.09.2017