以前に指摘したように、Pig は空の (0 バイト) ファイルをうまく処理できません。残念ながら、これらのファイルを作成する方法はたくさんあります ( Hadoop ユーティリティ内であっても)。
Hadoop の glob 構文を使用して、 LOAD ステートメントで特定の命名規則に一致するファイルのみを明示的にロードすることで、この問題を回避できると考えました。残念ながら、これは機能していないようです。glob を使用して既知の適切な入力ファイルにフィルターをかけた場合でも、前述の 0 バイト エラーが発生します。
以下に例を示します。S3 に次のファイルがあるとします。
- mybucket/a/b/ (0 バイト)
- mybucket/a/b/myfile.log (>0 バイト)
- mybucket/a/b/yourfile.log (>0 バイト)
Pig スクリプトで次のような LOAD ステートメントを使用すると、次のようになります。
myData = load 's3://mybucket/a/b/*.log as ( ... )
Pig が 0 バイトのファイルでチョークしないことを期待しますが、それでもチョークします。Pig に、予想される glob パターンに一致するファイルのみを実際に見てもらうためのトリックはありますか?