0
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)
}
}
ここではSpoutからBoltにファイルオブジェクトを渡すことができません。私はこれに何かを見逃していますか?まず最初に私の質問は、SpoutからBoltにオブジェクトを渡すことができます:Apache StormのSpoutからBoltにファイルを渡すことはできますか?
SpoutOutCollector collecot.emit(fileName)
ここで、fileNameはファイルオブジェクトを含むオブジェクトのリストです。
解決してくれてありがとうございますが、私がここでやろうとしていることはスパウトから複数のファイルを送信する必要があり、各ボルトはそのファイルを受け取り内容を抽出する必要があります。 –
それでは、私のバイト・バイ・アドバイスによる問題は何ですか?ファイルごとに1つのタプルを使用したいですか?はいの場合、完全な内容を保持するには小さすぎる場合は、バイト配列またはバイト配列のリストを使用してください。または、「複数のファイルを送信する」ということをより詳細に指定できますか? –
私はあなたの提案に何の問題もありませんが、いくつかの疑問を持っています。私の要件はスパウトがデータベースから複数のファイル(1000個のファイル)をフェッチし、スパウトがボルトとボルトでファイルを収集し、 Apache Tikaを使用してファイルの内容とメタデータを抽出しています)。今、私の質問は、私がバイト単位でバイトを送信すれば解析できますか? –