2

私は豚が初めてです。

pig では、名前にタイムスタンプが付いた複数のファイルをロードしたいと考えています。

2012/02/12 から 2012/02/19 の間にファイルをロードすると、次のように動作します

$START = "12"
$END = "19"
raw_data = load '/table/status/2012/02/{$START,$END}' using Loader()

開始日が 2011/12/29 で、終了日が 2012/01/04 だとすると、コード行を変更するにはどうすればよいですか?

助けてくれてありがとう!

4

1 に答える 1

11

必要な範囲は、次のグロブを使用してロードできます。

raw_data = load '/table/status/{2011/12/{29,3{0,1}},2012/01/0[1-4]}' using Loader()

Pig は Hadoop のグロビングを使用するため、使用できるものは基礎となる HDFS のバージョンに依存することに注意してください。これは 0.20 未満で動作します。

より複雑な範囲が必要な場合、このディレクトリ列挙の方法は少し柔軟性に欠ける可能性があります。したがって、ここで提案されているように、シェルスクリプトを使用して必要なディレクトリを収集することを検討してください

于 2012-09-28T08:28:18.937 に答える