Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何读取文本文件并使用TextIO返回额外的输入字段?_Google Cloud Platform_Google Cloud Dataflow_Apache Beam_Dataflow - Fatal编程技术网

Google cloud platform 如何读取文本文件并使用TextIO返回额外的输入字段?

Google cloud platform 如何读取文本文件并使用TextIO返回额外的输入字段?,google-cloud-platform,google-cloud-dataflow,apache-beam,dataflow,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,Dataflow,我有一个KV的PCollection,其中key是filename,value是文件的一些附加信息(例如,生成文件的“源”系统)。例如: 我需要从文件中读取所有行,并使用“Source”字段,作为KV PCollection返回 KV(line1 from X1.dat, "SourceX") KV(line2 from X1.dat, "SourceX") ... KV(line1 from Y1.dat, "SourceY") 我可以通过调用FileIO.match()并后跟一个DoFn来

我有一个KV的PCollection,其中key是filename,value是文件的一些附加信息(例如,生成文件的“源”系统)。例如:

我需要从文件中读取所有行,并使用“Source”字段,作为KV PCollection返回

KV(line1 from X1.dat, "SourceX")
KV(line2 from X1.dat, "SourceX")
...
KV(line1 from Y1.dat, "SourceY")
我可以通过调用FileIO.match()并后跟一个DoFn来实现这一点,在DoFn中,我依次读取文件并附加SourceX(从SideInput中传递的映射中检索)


为了获得并行阅读的好处,我可以使用TextIO.readAll()来实现这一点吗?read()返回一个没有文件名信息的PCollection。我如何将它连接回文件名到源映射的映射?已尝试使用密钥传输,但无法工作…

如果我理解正确,是否要并行读取该文件?不幸的是,
TextIO.readAll
没有此功能。您必须使用
FileIO.match
,然后编写
DoFn
以所需的自定义方式读取文件

这是因为您将无法对文件进行随机搜索并保留行号计数


连续读取文件是否是管道的瓶颈?

当前使用的
FileIO.match()
是实现这一点的最佳方法,但一旦合并,您就可以使用新的
上下文文本转换

注意,以分布式方式计算行号本身就很昂贵;您可能想看看是否可以使用偏移量(计算起来要复杂得多,排序与行号相同)

KV(line1 from X1.dat, "SourceX")
KV(line2 from X1.dat, "SourceX")
...
KV(line1 from Y1.dat, "SourceY")