public class MySpout implements IRichSpout{
private List fileName; //enter code here
public void nextTuple(){
File file = new File("D:/small progs/tika_document_type_detection.pdf");
fileName.add(file);
this.collector.emit(new Values(fileName));
}
}
In Bolt
public class MyBolt implements IRichBolt{
public void execute(Tuple tuple){
FileInputStream stream = new FileInputStream(tuple.getValues(0));
//can i use this stream obj to parse this file(using Apache tika)
}
}
Hier bin ich nicht in der Lage Dateiobjekt von Spout zu Bolt passieren. Fehle ich etwas darin? Zunächst einmal meine Frage ist, können wir ein Objekt aus Spout Pass mit Loch:Ist es möglich, in Apache Storm eine Datei von Spout an Bolt zu übergeben?
SpoutOutCollector collecot.emit(fileName)
Hier filename die Liste der Objekte, die die Datei-Objekt enthält.
Danke für die Lösung, aber was ich hier zu tun versuche, ist die Notwendigkeit, mehrere Dateien aus der Tülle zu senden und jede Schraube sollte diese Datei erhalten und den Inhalt extrahieren. –
Also, was ist das Problem mit meinem Vorschlag für Byte für Byte? Möchten Sie ein einzelnes Tupel pro Datei haben? Wenn ja, verwenden Sie einfach ein Byte-Array oder eine Liste von Byte-Arrays, wenn eines zu klein ist, um den vollständigen Inhalt aufzunehmen. Oder können Sie genauer spezifizieren, was Sie unter "Mehrere Dateien senden" verstehen? –
Ich habe kein Problem mit Ihrem Vorschlag, aber habe einige Zweifel, meine Anforderung ist Auswurf wird mehrere Dateien holen (sagen für 1000 Dateien) aus der Datenbank und Ausgießer sollte emittieren, Bolzen und Bolzen wird die Datei sammeln und analysieren die Datei wie (Extrahieren der Inhalte und Metadaten der Datei mit Apache Tika) und jetzt ist meine Frage wird ich in der Lage, es zu analysieren, wenn ich byte by byte senden –