2016-10-28 6 views
0

Ich möchte csv-Dateien von einem Server (Unix-Server A) an hdfs-Verzeichnisse senden. Basierend auf welchen CSV-Dateien möchte ich sie in verschiedenen Verzeichnissen in hdfs landen.Landing-Dateien in verschiedenen Verzeichnissen in hdfs kafka, Kanal

Ich habe eine 11 csv-Dateien, die von kafka Produzent auf Unix-Server A an Kafka gesendet werden. Das erste Element der CSV-Datei enthält einen Schlüssel. Ich möchte das erste Element nehmen und es zum Schlüssel der Kafka-Botschaft machen. Außerdem möchte ich den Wert der Daten als die Nachricht in Kafka senden.

Wenn es den Kafka-Cluster trifft, gibt es einen Kanalagenten, der die Daten aufnimmt, und einen Interceptor, der die Daten nach Schlüssel sortiert, um sie auf 11 Kafka-Topic-Kanäle zu richten (als Kanal im Kanal). Die Kanäle leiten die Daten dann in das entsprechende hdfs-Verzeichnis um.

Macht dieses Design Sinn? Oder gibt es einen besseren Weg? Vielleicht Funkenströme?

+0

Sie könnten auch in Betracht ziehen, Kafka Connect und den konfluenten Open Source HDFS Sink Connector zu verwenden (siehe https://github.com/confluentinc/kafka-connect-hdfs) –

+0

, leider nicht auf unserem Cluster (CDH) verfügbar. – Defcon

Antwort

0

Das Setup, das Sie erwähnt haben, scheint auf den ersten Blick gut zu sein.

Die Interzeptoren sind eine gute Möglichkeit, Ereignisdetails in die Header einzufügen. Sie haben jedoch erwähnt, dass es die Kanäle sind, die die Nachrichten sortieren/leiten. Statt dessen möchten Sie vielleicht den Header, den Sie hinzufügen, in der Interceptor als Teil des Pfads in der hdfs Senke.

Verwandte Themen