0

GCS にある 3 つのストリーム(「クリック」、「インプレッション」、「アクティブ ビュー」)から変換を実行するパイプラインを作成しました。個々のストリームを GCS に書き戻す必要がありますが、ファイルを分離する (後で BigQuery にロードする) 必要があります。これは、すべてのストリームのスキーマがわずかに異なるためです。

書き込みの 1 つが 2 回連続して失敗し、毎回異なるエラーが発生したため、パイプラインが失敗しました。

これらは、GDC から視覚的に表された最後の 2 つのワークフロー/パイプラインであり、失敗を示しています。

書き込み失敗

書き込み失敗

最初のエラー:

Feb 21, 2015, 12:55:14 PM (b0cbc05dfc56dbd9): Workflow failed. Causes: (f98c177c56055863): Map task completion for Step "ActiveViews-GSC-write" failed. Causes: (2d838e694976dc6): Expansion failed for filepattern: gs://cdf/binaries/tmp-38156614004ed90e-[0-9][0-9][0-9][0-9][0-9]-of-[0-9][0-9][0-9][0-9][0-9].avro.

2番目のエラー:

Feb 21, 2015, 1:20:15 PM (19dcdcf1fe125eeb): Workflow failed. Causes: (2a27345ef73673d3): Map task completion for Step "ActiveViews-GSC-write" failed. Causes: (8f79a20dfa5c4d2b): Unable to view metadata for file: gs://cdf/binaries/tmp-2a27345ef7367fe6-00001-of-00015.avro.

「ActiveViews-GCS-Write」ステップでのみ発生しています。

私たちが何を間違っているのか分かりますか?

4

2 に答える 2

1

回避策が見つかりました。問題は、複数の入力ソースが指定され、フラット化を使用してそれらをマージする場合にあるようです。

2 つの入力ソース (たとえば、2 月 1 日から 2 月 2 日のすべてのファイル) に flatten を使用しても機能しません (または、やり方が間違っています)。

PCollection<String> pc1 = pipeline.apply(TextIO.Read.from("gs://<bucket_name>/NetworkImpressions_20150201*"); //1st Feb
PCollection<String> pc2 = pipeline.apply(TextIO.Read.from("gs://<bucket_name>/NetworkImpressions_20150202*"); //2nd Feb
PCollectionList<String> all = PCollectionList.of(pc1).and(pc2);
PCollection<String> flattened = all.apply(Flatten.<String>pCollections());

代わりに、GLOB を (フラット化せずに) 使用するだけで、毎回機能します。

pipeline.apply(TextIO.Read.from("gs://<bucket_name>/Files_2015020[12]*");
于 2015-02-24T00:27:06.663 に答える