2011-06-29 7 views
0

私は、渡された行が大きすぎる(20M以上)場合、reader.readline()にOutOfMemoryExceptionがあるハープストリームプログラムを使用しています。あるサイズ以上のレコードをハーフープに渡すように指示する方法はありますか?大きすぎるレコードは100万分の1です。私はむしろスキップ不良レコードオプションを使用しないでください。非常に大きなレコードを省略したHadoopストリーミング

私はまた、このコードhttp://code.google.com/p/owasp-esapi-java/issues/attachmentText?id=183&aid=-7134623167843514645&name=BoundedBufferedReader.javaの代わりにreader.readline()の代わりに使用しようとしましたが、遅すぎると思います。時間。

+0

私は元の問題は依然として立っていますが、問題を緩和するようなスワップを追加しました。 –

答えて

0

これはHadoopには問題ありませんが、これは行の読み方に問題があります。

reader.readline()は、行の終わりがどこにあるかを調べる必要があるため、一度に1文字を読み込む可能性があります。したがって、文字を文字でチェックすることは、おそらくそれほど遅くなることはありません。あなたは一度に一つの文字を読んで、ある種のリストやバッファに戻すことができます。長すぎる場合は、行を無視して移動してください。改行文字が見えたら、あなたは良いことです。

関連する問題