希望实现一个 Dataflow(或 flink)流管道,从 pub-sub 读取数据,将数据转换为 parquet,并每隔几分钟写入输出。
这需要固定窗口吗?如果是这样,窗口中的所有事件最终都会发送到单个工作人员(固定窗口工作人员)
如果在窗口之前添加一个键,则会导致随机播放。如何避免这种情况?
即希望实现一些可以扩展到 N 个工作线程的东西,独立处理和写出 N 个文件,无需随机播放。这是一个简单的 ETL 流程。
您不需要使用窗户。只需有一个带有源的工作流程,然后是 Map(或 FlatMap)函数,然后是接收器。
如果您的作业并行性与输入并行性相匹配(例如 Kafka 中的分区数量),这会很有效...不知道它如何与您使用的任何 pub-sub 系统一起工作。
如果您需要生成 N 个输出文件,其中 N 与您的源并行度不匹配,那么您将必须进行某种洗牌。您可以将接收器的并行度设置为您想要的任何值,Flink 将自动进行重新平衡(洗牌)以处理不同的源与接收器并行度。