2017-02-02 1 views
1

Ich habe einen lokalen NiFi-Fluss, der Dateien lokal liest und sie über Kommandozeilenargumente in ein Python-Skript eingibt. Nun möchte ich aber, dass NiFi andere in Amazon S3 gespeicherte Dateien liest und sie in mein Python-Skript einfügt.Datei von S3 holen und in ein Python-Skript einspeisen

Ich habe ListS3 und FetchS3 Prozessoren verwendet, um meine Dateien zu bekommen, und ich habe Zugriff auf Variablen wie s3.bucket und filename, die genau die Dateien in S3 gespeichert entsprechen.

Ich verwende auch MergeContent, um mehrere Dateien zusammenzuführen, die vom Prozessor FetchS3 kommen. Mein Python-Skript in mehreren Dateien wie dies dauert:

python myScript.py -f ~/temp/file1.txt -k ~/temp/file2.txt

Der Python-Skript liest die Dateien Daten in ihnen zu verarbeiten. Aber mit S3 egal welches Format, das ich in der file path habe ich bekomme immer diese Fehlermeldung:

Error=[Errno 2] No such file or directory: 'myS3bucket/s3-files/File1.txt'

bei dem Versuch, etwas zu laufen:

python myScript.py -f ${s3.bucket}/${filename} innerhalb des ExecuteStreamCommand Prozessor.

Antwort

2

Ihre Dateien, die in S3 von NiFi stammen, werden über das Content Repository verwaltet und sind standardmäßig nicht in Ihrem Dateisystem an denselben Speicherorten vorhanden. Sie können PutFile verwenden, um die Dateien auf die Festplatte zu schreiben, und dann Ihr Skript aufrufen.

Verwandte Themen