私のデータ形式は、改行の代わりに \0 を使用しています。そのため、デフォルトの hadoop textLine リーダーは機能しません。特殊文字で区切られた行を読み取るように設定するにはどうすればよいですか?
LineReader を設定できない場合は、特定のストリーム プロセッサ (tr "\0" "\n") を適用することが可能かもしれませんが、これを行う方法はわかりません。
"textinputformat.record.delimiter"
そのための構成プロパティがあります。このプロパティ値を「\0」に変更すると、デフォルトの EOL (「\n」) 区切り文字を変更できます。
詳細については、http: //amalgjose.wordpress.com/2013/05/27/custom-text-input-format-record-delimiter-for-hadoopを参照してください。
Spark でデフォルトの区切り文字を変更することについても同様の質問があり、これも役立つ場合があります。
\0
の代わりにデータを分割する独自の InputFormat クラスを作成できます\n
。その方法のウォークスルーについては、ここをチェックしてください: http://developer.yahoo.com/hadoop/tutorial/module5.html#fileformat
その要点は、デフォルトのInputFormatクラスまたはそのサブクラスのいずれかをサブクラス化し、RecordReader
カスタム ルールを使用して独自に定義する必要があるということです。詳細については、InputFormat のドキュメントを参照してください。
TextDelimited
スキームを使用するとうまくいくでしょうか?http://docs.cascading.org/cascading/1.2/javadoc/cascading/scheme/TextDelimited.html
InputFormat
これにより、独自の などを作成する必要がなくなります。
区切られたテキストの例は https://github.com/Cascading/Impatient/wiki/Part-2にあります