2016-07-07 1 views
1

У меня есть два ZIP-файла на hdfs в той же папке: /user/path-to-folder-with-zips/.Почему мои `binaryFiles` пусты, когда я их собираю в pyspark?

я прохожу, что «BinaryFiles» в pyspark:

zips = sc.binaryFiles('/user/path-to-folder-with-zips/') 

Я пытаюсь распаковать файлы почтового индекса и делать вещи для текстовых файлов в них, поэтому я попытался просто посмотреть, что содержание будет когда я пытаюсь разобраться с RDD. Я сделал это так:

zips_collected = zips.collect() 

Но, когда я делаю это, это дает пустой список:

>> zips_collected 
[] 

Я знаю, что молнии не пустые - они имеют TextFiles. Документация here говорит

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

Что я здесь делаю неправильно? Я знаю, что я не могу просмотреть содержимое файла, потому что он заархивирован и, следовательно, двоичный. Но, по крайней мере, я должен был бы видеть SOMETHING. Почему он ничего не возвращает?

Там может быть более чем один файл на почтовый файл, но содержимое всегда что-то вроде этого:

rownum|data|data|data|data|data 
rownum|data|data|data|data|data 
rownum|data|data|data|data|data 
+0

Мне пришло в голову, что, возможно, это проблема с * типом * zip-файла. Как узнать, какой тип zip-файла это? – Hunle

ответ

1

Я предполагаю, что каждый почтовый файл содержит один текстовый файл (код легко изменяется для несколько текстовых файлов). Перед обработкой вы должны сначала прочитать содержимое zip-файла сначала через io.BytesIO. Решение основано на https://stackoverflow.com/a/36511190/234233.

+0

Мой код в точности такой, почти дословно. Но это порождает ошибку. Вот почему я думал, что просто запустил «собирать», просто чтобы увидеть, есть ли вообще что-то в RDD. Но он возвращает пустой список? Вот как я начал отлаживать. – Hunle

+0

Сколько текстовых файлов в каждом zip-файле - 1 или больше? Кроме того, можете ли вы разместить небольшой образец zip-файлов? Если данные являются собственностью, то вместо этого используются искусственные данные. – ramhiser

+0

Конечно, это всего лишь куча psv-файлов. Каждый файл имеет порядок 10-ти МБ – Hunle

Смежные вопросы