从PCollection输出多个文本文件<kv <string,string =“”>&gt;

时间:2016-10-28 18:56:03

标签: google-cloud-dataflow

如何从PCollection<KV<String, String>>输出多个文件?

每个条目中的键是文件名。 groupByKey转换给了我PCollection<KV<String, Iterable<String>>>,但是如何将它们写入多个文件?

例如,给出以下输入

<file1, value1>
<file2, value2>
<file1, value3>

我想输出两个文件

file1:
  value1
  value3

file2:
  value2

1 个答案:

答案 0 :(得分:2)

Dataflow目前没有可以为您执行此操作的转换。作为解决方法,您可以使用简单的DoFn执行此操作,该KV将从IOChannelFactory中提取文件名,使用Iterable<String>打开文件,并将func doSomethingOnceAtATime() { var shouldExit = false DispatchQueue(label: "abcxyz123").sync { guard !inProgress else { shouldExit = true; return } inProgress = true } guard !shouldExit else { return } // Do something } 写入它

请参阅similar questionanother one

我们计划解决这个https://issues.apache.org/jira/browse/BEAM-92,但还没有具体的时间表。