結果を別のディレクトリに出力する必要があるレデューサーがあります。これにより、後で出力をパーティションテーブルとしてHiveへの入力として使用できます。(Hiveはフォルダー名に基づいてパーティションを作成します)。これらの場所に書き出すために、現在、これを実現するためにHadoopフレームワークを使用していません。いわば、「Hadoopの背後」にある別々の場所に書き出すだけです。つまり、これらのファイルを出力するためにhadoopのAPIを使用していません。
mapred.reduce.tasks.speculative.execution
に設定すると問題が発生しましたtrue
。同じタスクに対する複数のタスクの試行が同じ場所に書き込んでいるため、これが当てはまると理解しています。
HadoopのAPIを正しく使用して、同じレデューサーから複数の異なるフォルダーに出力し、私も使用できるようにする方法はありますmapred.reduce.tasks.speculative.execution=true
か?(私はMultipleOutputsについて知っていますが、投機的実行をサポートするかどうかはわかりません。)
もしそうなら、それを行ってS3に出力する方法はありますか?