如何从PCollection<KV<String, String>>
输出多个文件?
每个条目中的键是文件名。 groupByKey转换给了我PCollection<KV<String, Iterable<String>>>
,但是如何将它们写入多个文件?
例如,给出以下输入
<file1, value1>
<file2, value2>
<file1, value3>
我想输出两个文件
file1:
value1
value3
file2:
value2
答案 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 question和another one。
我们计划解决这个https://issues.apache.org/jira/browse/BEAM-92,但还没有具体的时间表。