gpt4 book ai didi

java - 循环遍历 PCollection 以创建 Graph 数据结构,然后将其作为 SideInput 传递到管道转换

转载 作者:行者123 更新时间:2023-11-30 06:43:38 24 4
gpt4 key购买 nike

我有一个用例,我必须将一个大查询表读入数据流管道,然后读取该 PCollection 中的每一行以构建图形数据结构。然后将图作为 SideInput 传递到需要此图和另一个大型查询表 PCollection 作为参数的更多转换步骤。以下是我现在所拥有的:

Pipeline pipeline = Pipeline.create(options);

//Read from big query
PCollection<TableRow> bqTable = pipeline.apply("ReadFooBQTable", BigQueryIO.Read.from("Table"));

//Loop over PCollection create "graph" still need to figure this out


//pass the graph as side input
pCol.apply("Process", ParDo.withSideInputs(graph).of(new BlueKai.ProcessBatch(graph))).apply("Write",
Write.to(new DecoratedFileSink<String>(standardBucket, "csv", TextIO.DEFAULT_TEXT_CODER, null, null, WriterOutputGzipDecoratorFactory.getInstance())).withNumShards(numChunks));

最佳答案

问题是如何序列化图表以在机器之间传递它。如果您定义 Coder了解如何序列化表示图形的元素,然后您可以按照您的描述将其用作侧面输入。

假设该图可以被编码,那么您只需将其用作单例侧输入。这假设单台机器可以处理的行数。您可能需要定义 CombineFn<TableRow, Graph, Graph>从表行计算图表。假设两个图可以组合(例如,它是关联和交换运算),那么您可以使用组合加 asSingletonView .

另一种方法是使用 List<TableRow>作为侧面输入并让每台机器构建图表。

关于java - 循环遍历 PCollection 以创建 Graph 数据结构,然后将其作为 SideInput 传递到管道转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44011325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com