Google cloud storage 如何在数据流作业中标识已处理的文件
如何在数据流作业中标识已处理的文件?我正在使用通配符从云存储中读取文件。但每次作业运行时,它都会重新读取所有文件 这是一个批处理作业,下面是我正在使用的读取文本的示例Google cloud storage 如何在数据流作业中标识已处理的文件,google-cloud-storage,google-cloud-dataflow,apache-beam,Google Cloud Storage,Google Cloud Dataflow,Apache Beam,如何在数据流作业中标识已处理的文件?我正在使用通配符从云存储中读取文件。但每次作业运行时,它都会重新读取所有文件 这是一个批处理作业,下面是我正在使用的读取文本的示例 PCollection<String> filePColection = pipeline.apply("Read files from Cloud Storage ", TextIO.read().from("gs://bucketName/TrafficData*.txt")); PCollection fil
PCollection<String> filePColection = pipeline.apply("Read files from Cloud Storage ", TextIO.read().from("gs://bucketName/TrafficData*.txt"));
PCollection filepcoction=pipeline.apply(“从云存储读取文件”,TextIO.Read().from(“gs://bucketName/TrafficData*.txt”);
要查看与通配符匹配的文件列表,可以使用gsutils
,这是云存储命令行实用程序。您将执行以下操作:
gsutils ls gs://bucketName/TrafficData*.txt
现在,当涉及到多次运行批处理作业时,管道无法知道它已经分析了哪些文件。要避免分析新文件,可以执行以下任一操作:
gsutils ls gs://bucketName/TrafficData*.txt
TextIO
的watchForNewFiles
功能。只要您想继续处理文件,您就必须离开作业才能运行PCollection
,使用TextIO.readAll()
读取每个文件,并将分析过的文件列表存储在某处。稍后,当您再次运行管道时,可以将此列表用作不需要再次运行的文件的黑名单