1

私のデータ形式は、改行の代わりに \0 を使用しています。そのため、デフォルトの hadoop textLine リーダーは機能しません。特殊文字で区切られた行を読み取るように設定するにはどうすればよいですか?

LineReader を設定できない場合は、特定のストリーム プロセッサ (tr "\0" "\n") を適用することが可能かもしれませんが、これを行う方法はわかりません。

4

3 に答える 3

2

"textinputformat.record.delimiter"そのための構成プロパティがあります。このプロパティ値を「\0」に変更すると、デフォルトの EOL (「\n」) 区切り文字を変更できます。

詳細については、http: //amalgjose.wordpress.com/2013/05/27/custom-text-input-format-record-delimiter-for-hadoopを参照してください。

Spark でデフォルトの区切り文字を変更することについても同様の質問があり、これも役立つ場合があります。

于 2014-03-26T16:32:48.417 に答える
1

\0の代わりにデータを分割する独自の InputFormat クラスを作成できます\n。その方法のウォークスルーについては、ここをチェックしてください: http://developer.yahoo.com/hadoop/tutorial/module5.html#fileformat

その要点は、デフォルトのInputFormatクラスまたはそのサブクラスのいずれかをサブクラス化し、RecordReaderカスタム ルールを使用して独自に定義する必要があるということです。詳細については、InputFormat のドキュメントを参照してください。

于 2012-08-27T18:20:28.583 に答える
0

TextDelimitedスキームを使用するとうまくいくでしょうか?http://docs.cascading.org/cascading/1.2/javadoc/cascading/scheme/TextDelimited.html

InputFormatこれにより、独自の などを作成する必要がなくなります。

区切られたテキストの例は https://github.com/Cascading/Impatient/wiki/Part-2にあります

于 2013-01-03T05:52:48.473 に答える