Как посмотреть каталог в HDFS для входящих файлов с помощью Python? (Python Script выполняется Docker Container; без Cronjob в HDFS) - PullRequest
0 голосов
/ 26 апреля 2019

Сценарий: Мой скрипт Python выполняется в контейнере докера, который развернут в ранчере (кластер kubernetes).Поэтому контейнер всегда работает.Я хочу реализовать метод, который просматривает каталог в моей HDFS для входящих файлов.если есть новые файлы, я хочу, чтобы скрипт выполнял дальнейшие действия (шаги предварительной обработки, чтобы обрабатывать данные).После обработки новых файлов их следует удалить.после этого скрипт ожидает новых входящих файлов для их обработки.Поэтому это не должно быть cronjob в HDFS.мне нужен код в скрипте, который выполняется Docker-контейнером.В настоящее время я использую hdfs cli для подключения к моей HDFS.Для Java я нашел INotify, но мне нужно сделать это с python.

Кто-нибудь знает Python Lib или какую-то другую возможность получить это?

1 Ответ

0 голосов
/ 26 апреля 2019
#Schedule below script in crontab for interval of 1 min or 5 min based on your requirement
#Update the parameters(HDFSLocation,FileName,etc) as per the requirement
#Update the script to trigger alert(send mail/trigger another script if newHDFSFileCount > #previousHDFSFileCount)

import subprocess
import os

#Parameters
cwd=os.getcwd()
file='HDFSFileCount.txt'
fileWithPath=cwd+"/"+file
HDFSLocation="/tmp"
previousHDFSFileCount=0
newHDFSFileCount=0
#Calculate New HDFS file count
out = subprocess.Popen(['hadoop','fs','-ls', '/tmp/'], stdout=subprocess.PIPE).communicate()
if out[0][0]==0:
        newHDFSFileCount=0
else:
        newHDFSFileCount=out[0][6]

#
if os.path.exists(fileWithPath):
        f=open(fileWithPath,"r")
        previousHDFSFileCount=f.read()
else:
        f=open(fileWithPath,"w+")
        f.write(newHDFSFileCount)
        previousHDFSFileCount=newHDFSFileCount

f.close()

if (newHDFSFileCount>previousHDFSFileCount):
        f=open(fileWithPath,"w")
        f.write(newHDFSFileCount)
        #print(previousHDFSFileCount)
        #print(newHDFSFileCount)
        f.close()


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...