センサー ネットワークのデータから次の処理を行うカスケード 1.2 プログラムを作成しました。
- ミリ秒のタイムスタンプ、イベント タイプ (センサー データ、バッテリー レベル、センサー電源状態のいずれか)、イベント本文の 3 つの列を持つ CSV ファイルを読み取る
- ミリ秒のタイムスタンプを最も近い秒に切り上げ、この値で GroupBy
- イベント タイプの GroupBy
- 次のテンプレートを使用して、出力を templatetap に書き出します: "{rounded timestamp}/{event type}/"
ログ データの量が少ない場合(~300MB)、私のプログラムは正常に動作しますが、EMR クラスター上のセンサー ネットワークによって生成された実際のログ データの量 (~200GB/日) でプログラムを実行すると、リデューサーが失敗し続けます。次のメッセージが表示されます。殺す!
テンプレート タップでテンプレートを静的にすると ("{rounded timestamp}/{event type}/" ではなく "output" のように)、ジョブは問題なく 3 時間で完了します。
したがって、問題はテンプレートのタップにあるようです!
おそらく、非常に多くの動的パスを処理できないのでしょうか? (しかし、私の理解では、デフォルトのパラメーターを使用して、いつでも最大 300 個のそれらを開いたりアクティブにしたりできますか?)
パス テンプレート自体を除いて、テンプレート タップにパラメーターを渡さなかったので、他のすべてのパラメーターは既定値になっています。
「{rounded timestamp}/{event type}/」テンプレートでジョブを機能させるにはどうすればよいですか?