2017-09-12 8 views
0

私はパイプラインに過去30日間のローリングウィンドウを読み込みたいと思います。 2017年1月15日に、私が読みたい:TextIO.GCフォルダをパイプラインに読み込み、過去30日間の名前を日付とします。

> gs://bucket/20170115/* 
> gs://bucket/20170114/* 
>. 
>. 
>. 
> gs://bucket/20161216/* 

Thisは、( "?"、 "*"、 "[..]")と言うglobパターンは私が

Similar question, but with no good example

をサポートしています30のText.IO.Readステップを実行しないようにしようとすると、すべてのPcollectionを1つにまとめると、パイプラインにホット・シャードが発生します。

答えて

1

GCSからファイルを読み込むとき、TextIOはGCSと同じワイルドカードパターンをサポートしています(Wildcard Names)。

question you linkedのための答えで

、弾丸#2はあなたの完全な範囲を表現するためにグロブの少数を形成示唆:例えば

2文字の範囲「〜67 23」である2[3-]プラス [3-5][0-9]プラス


TextIO6[0-7]

はまた、あなたが入力を指定できるようにする新しいAPI readAll()を持っていますファイルをデータとして動的に作成します。これは、あなたが必要とするファイル名の正確なセットに渡すことができます:

private static List<String> generate30DayFileGlobs(DateTime now) { 
    // .. 
} 

public static void main() { 
    Pipeline p = // .. 

    p.apply(Create.<String>of(generate30DayFileGlobs(DateTime.now()))); 
    .apply(TextIO.readAll()); 

    // .. 
} 

新しいTextIO.readAll() APIはまだリリースされていないが、あなたはビームアーチファクトバージョン2.2.0-SNAPSHOTを指定することにより、マスタから構築することができます。 2.2.0のリリースis in progressは、9月中に利用可能になるはずです。

0

1つのグロブパターン生成関数here

関連する問題