我在Cloud Dataflow中构建了一个PCollection
,我将按原样写入磁盘。我想构建另一个集合,通过索引引用第一个集合中的项目。 e.g。
PC1:
strings go here
some other string here
more strings
PC2:
0,1
1,1
0,2
我不确定如何在没有编写整个管道并启动另一个管道的情况下获取PC1中的索引,即便如此,我也不确定如何记录正在读取的行/记录号。简单地使用静态变量是否安全?我认为不是基于平台的一般并行性质。
答案 0 :(得分:1)
PCollection
本来就是无序的,所以没有"集合中项目的索引" - 但是,您可以在元素本身中包含行号:让PC1
为PCollection<KV<Integer, String>>
,其中整数是行号 - 基本上读取文本文件中与行号配对的行。
我们目前没有提供执行此操作的内置源代码 - 您最好的选择是编写一个简单的DoFn<String, KV<Integer, String>>
,将文件名作为输入并使用IOChannelFactory
打开文件并逐行读取并使用行号发出内容以生成PC1
。