Apache Beam:读入 PCollection 作为管道的 PBegin

Apache Beam: Reading in PCollection as PBegin for a pipeline

我正在调试这个光束管道,我的最终目标是将 PCollection 中的所有字符串写入一个文本文件。

我在创建要检查的 PCollection 之后设置了一个断点,我一直试图做的是创建一个

的新管道
  1. 读取此 output PCollection 作为初始输入
  2. 将其打印到文件(使用`TextIO.write().to("/Users/my/local/fp"))

我正在为如何将 PCollection 读入作为初始输入而苦苦思索#1。

我一直在尝试的框架:

Pipeline p2 = Pipeline.create();
p2.apply(// READ IN THE PCOLLECTION HERE)
  .apply(TextIO.write().to("/Users/my/local/fp")));
p2.run()

如有任何想法或建议,我们将不胜感激

为了将 pcollection 读入输入,您需要从源中读取它。 IE。一些数据存储在 BigQuery、Google Cloud Storage 等中。您可以使用特定的源转换从每个位置读取数据。根据存储数据的位置,您需要使用正确的来源并传入相关参数(即 GCS 路径、BigQuery table)

请看Minimal Word Count Example on the apache beam website (Full source on github)。我建议从这段代码开始并对其进行迭代,直到构建所需的管道。

在此示例中,文件是从 GCS 读取的

p.apply(TextIO.read().from("gs://apache-beam-samples/shakespeare/*"))

另请参阅此 guide on using IOs and also this list of beam IO transforms. If you just want a basic example working, you can use Create.of 以读取程序中的变量。