2017-02-23 13 views
-1

Apache Nifi上でScanContentプロセッサを実行しようとしていますが、テキストファイルをスキャンするときにプロセッサを実行させ、検索語句に.txt辞書ファイルを使用することができます(改行文字で区切られています)、辞書ファイル用のバイナリタイプのプロセッサを使用してファイルを検索すると、実行することができません。Apache NiFi - ScanContent辞書形式が正しく動作しない

バイナリ辞書ファイルに間違った形式を使用しているのか、別の方法でエンコードする必要があるのか​​はわかりません。どのような使用方法であれ、どこでもオンラインでサンプル辞書を見つけることができませんでした(ほとんどのものはScanAttributesに関連していました)。

私の辞書ファイルの形式は次のとおりです。

(.txtファイル内)

32 00001001001000010000100001000000 \ nは

マニュアルに従って要件は、辞書の用語がする必要があることです4バイトの整数、続いてバイナリ検索語。

フォーマットを指定するのに役立つ可能性のあるバイナリ辞書でこのプロセッサを使用した経験がありますか?

答えて

2

通常、別のプログラムの出力としてバイナリ辞書ファイルが生成されます。 ScanContent unit testsにJavaでこれを実現する方法の例があります:

@Test 
public void testBinaryScan() throws IOException { 
    // Create dictionary file. 
    final String[] terms = new String[]{"hello", "good-bye"}; 
    final ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    try (final DataOutputStream dictionaryOut = new DataOutputStream(baos);) { 
     for (final String term : terms) { 
      final byte[] termBytes = term.getBytes("UTF-8"); 
      dictionaryOut.writeInt(termBytes.length); 
      dictionaryOut.write(termBytes); 
     } 
     final byte[] termBytes = baos.toByteArray(); 

     final Path dictionaryPath = Paths.get("target/dictionary"); 
     Files.write(dictionaryPath, termBytes, StandardOpenOption.CREATE, StandardOpenOption.WRITE); 
... 
関連する問題