Python читает файл как поток из HDFS

Вот моя проблема: у меня есть файл в HDFS, который потенциально может быть огромным (= недостаточно, чтобы уместить все в памяти)

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

for line in open("myfile", "r"):
    # do some processing

Я смотрю, есть ли простой способ сделать это правильно, без использования внешних библиотек. Я, вероятно, могу заставить его работать сlibpyhdfs или жепитон-HDFS но я хотел бы, если это возможно, избегать введения новых зависимостей и непроверенных библиотек в систему, тем более что оба эти элемента, по-видимому, не поддерживаются и заявляют, что их не следует использовать в производстве.

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

Есть ли способ применить функции Python как правые операнды каналов, используя модуль подпроцесса? Или, что еще лучше, откройте его как файл в качестве генератора, чтобы я мог легко обрабатывать каждую строку?

cat = subprocess.Popen(["hadoop", "fs", "-cat", "/path/to/myfile"], stdout=subprocess.PIPE)

Если есть другой способ достичь того, что я описал выше, без использования внешней библиотеки, я также довольно открыт.

Спасибо за любую помощь!

Ответы на вопрос(3)

Ваш ответ на вопрос