【发布时间】:2017-04-25 00:33:16
【问题描述】:
我正在尝试创建一个处理几千个文件的数据流作业,并为每个文件写入 GCS 中的不同目标。
我必须将大量 TextIO 作为源并写入目标作为单独的流程。示例代码 sn-p 如下所示:
List<PCollection<String>> pcs = new ArrayList<>();
for(int i = 0; i < 2000; i++) {
pcs.add(p.apply(TextIO.Read.from("gs://wushilin-asia/some-folder/input-" + i + "/*")));
}
for(int i = 0; i < 2000; i++) {
pcs.get(i).apply(TextIO.Write.to("gs://wushilin-asia/some-folder/output-" + i + "/"));
}
p.run();
这会静默失败(似乎永远挂起),并在后端出现错误“上传的数据不足”。
这里出了什么问题?
【问题讨论】:
-
原来是数据流结构太复杂,数据流作业元数据存储处理不了。减少到更少的组件解决了这个问题。e
标签: google-cloud-platform google-cloud-dataflow apache-beam