この方法で同じファイルに2つの「ストア」を持つPigスクリプトを実行しようとすると
store Alert_Message_Count into 'out';
store Warning_Message_Count into 'out';
ハングします。つまり、50% 完了したと表示された後、処理が進まないということです。
これは間違っていますか?両方の結果を同じファイル (フォルダ) に保存することはできませんか?
この方法で同じファイルに2つの「ストア」を持つPigスクリプトを実行しようとすると
store Alert_Message_Count into 'out';
store Warning_Message_Count into 'out';
ハングします。つまり、50% 完了したと表示された後、処理が進まないということです。
これは間違っていますか?両方の結果を同じファイル (フォルダ) に保存することはできませんか?
HDFS には追加モードがありません。そのため、map-reduce プログラムを実行しているほとんどの場合、出力ファイルは一度開かれ、データが書き込まれてから閉じられます。このアプローチを想定すると、同じファイルに同時にデータを書き込むことはできません。
別のファイルに書き込んでみて、map-red プログラムがハングしないかどうかを確認してください。それでも問題が解決しない場合は、他にいくつかの問題があります。
結果と map-reduce ログを取得して、何が問題なのかを分析できます。
[編集:]
同じファイルに書き込んだり、既存のファイルに追加したりすることはできません。HDFS 追加機能は開発中です。
これに取り組むには、次の 2 つのことを行うことができます。
1) Alert_Message_Count と Warning_Message_Count の両方に同じスキーマ コンテンツがある場合は、Chris が提案したようにユニオンを使用できます。
2) スキーマが同じでない場合は、後処理を行います。つまり、2 つの別々の出力を 1 つにマージする map reduce プログラムを作成します。
通常、Hadoop MapReduce では、ジョブの出力を既に存在するフォルダーに保存することはできないため、これも不可能だと思います (Pig がコマンドを一連の M/R ステップに変換するのを見て) - しかし、私はただハングするのではなく、なんらかの形式のエラー メッセージが表示されることを期待してください。
クラスター ジョブ トラッカーを開いて、タスクのログを確認すると、ログから、これをさらに診断するのに役立つ何かが得られますか?
豚のメーリングリストもチェックする価値があるかもしれません(まだ行っていない場合)
あるデータセットを別のデータセットに追加する場合は、次のunion
キーワードを使用します。
grunt> All_Count = UNION Alert_Message_Count, Warning_Message_Count;
grunt> store All_Count into 'out';