3

私はHadoopとPigの両方に非常に慣れていません。私はいくつかの単純なプログラムを実行できましたが、XML ファイルの一部の形式が正しくない場合に XML を処理するのが面倒でした。

XMLLoader('tag') を使用して、xml ファイルからすべてのタグを取得できます。ただし、1 つが欠落している場合、適切に形成されたクローズ タグ ピッグはその 1 つで停止します。例えば

<tag>
</tag>
<tag>
</tag1>
<tag>
</tag>

これは、最初の有効なタグのみを取得します。現在、私は JAQL の経験があり、エラー レコードを無視して、アプリケーションが 2 番目のタグを取得できるようになりました。

私の質問は、JAQL ではなく、Pig を使用して XML の不適切なフォーマットを処理する方法でしたか?

4

1 に答える 1

0

私はブタの XMLLoader コードを見てきましたが、不正な形式のタグで起こっているように見えるのは、ローダーがタグが終了したことをまったく認識せず、新しいメイン タグに入ったことを認識する方法がないことです。現在、これを回避するために XMLLoader を使用する方法はないようです。

ただし、必要な方法で動作するように XMLLoader を変更することは可能です。おそらく、skipToTag メソッドの条件を変更して、指定された開始タグの別のインスタンスに遭遇した場合に、不正な形式のタグを無視してスキップするようにします。同じ名前のタグをネストしている場合 (例: アドレスをルートとして、アドレスをドキュメントの下位の要素として持つ)、これは混乱することに注意してください。

ただし、ほとんどの場合、事前に XML を検証するか、プリプロセッサで有効な XML のみを抽出して pig を実行するファイルにする方がよいと思われます。

お役に立てれば。

于 2013-11-06T14:39:24.790 に答える