0

我运行数据流作业以从存储在 GCS 中的文件中读取数据,每条记录都有一个“事件类型”,我的目标是按“事件类型”拆分数据并将每个输出写入 bq 表,现在我正在使用一个过滤器来执行此操作,但是我想尝试 GroupByKey 转换,它希望可以使流程动态化,因为新的事件类型将随着时间的推移流入,这在开发时无法预测。所以现在我的挑战是,我不知道是否可以为每个 KEY(来自输出 GroupByKey 的密钥)构造一个 WRITE 转换?如果它可行或任何其他方式可以实现这一目标将是理想的,任何建议将不胜感激

4

1 回答 1

1

您不需要为每个事件类型的值编写转换;您只需要编写一个可以处理事件类型的所有值的转换。

GroupByKey 将产生一个 PCollection<KV<EventType, Iterable<ValueType>>。所以这个 PCollection 的每条记录都是一个键值对。键是 EventType,值是具有此键类型的值的可迭代。然后,您可以应用转换,将这些键中的每一个转换为代表您要在 BigQuery 中创建的行的 TableRow。您可以通过定义一个来做到这一点:

ParDo<KV<EventType, Iterable<ValueType>>, TableRow>

例如,如果您的 EventType 是一个字符串,而您的 ValueType 是一个字符串,那么您可能会为每个键值对发出包含两列的行。第一列可能只是对应于 EventType 的字符串,第二列可能是逗号分隔的值列表。

于 2015-04-14T05:57:09.293 回答