6

私たちのワークフローは、AWS Elastic Map Reduceクラスターを使用して、一連のPigジョブを実行し、大量のデータを操作して集計レポートにします。残念ながら、入力データには一貫性がない可能性があり、入力ファイルがないか、0バイトのファイルがパイプラインに渡されないか、パイプラインの一部のステージで生成される可能性があります。

LOADステートメント中に、入力ファイルが見つからないか、入力ファイルのいずれかが0バイトである場合、Pigは見事に失敗します。

これを回避する良い方法はありますか(カスタムローダーを作成せずに、Pig構成またはスクリプトまたはHadoopクラスター構成内で...)?

(AWS Elastic Map Reduceを使用しているため、Pig0.6.0とHadoop0.20でスタックしています。)

4

2 に答える 2

1

(後世のために、私たちが思いついた標準以下のソリューション:)

0バイトの問題に対処するために、状況を検出し、代わりに1つの改行を含むファイルを挿入できることがわかりました。これにより、次のようなメッセージが表示されます。

Encountered Warning ACCESSING_NON_EXISTENT_FIELD 13 time(s).

しかし、少なくともPigは例外を除いてクラッシュしません。

または、警告を回避するために、そのファイルに適切な文字数の行を作成することもでき'\t'ますが、データにガベージが挿入され、フィルターで除外する必要があります。

これらの同じアイデアを使用して、ダミーファイルを作成することにより、入力ファイルがない状態を解決できますが、上記と同じ欠点があります。

于 2011-04-20T23:23:55.963 に答える
1

私が使用しているアプローチは、シェルからpigスクリプトを実行することです。6つの異なる入力ディレクトリからデータを取得する1つのジョブがあります。そこで、入力ファイルごとにフラグメントを作成しました。

シェルは入力ファイルの存在をチェックし、フラグメントから最終的なpigスクリプトをアセンブルします。

次に、最後のpigスクリプトを実行します。ルーブゴールドバーグのアプローチのようなものだとは思いますが、これまでのところとても良いです。:-)

于 2015-01-26T15:32:31.303 に答える