基于 Cloud Dataflow 的航班数据处理与特征计算
1. 数据写入与管道搭建
通常不建议写入未分片的数据,因为这会迫使所有写入工作由单个工作器执行。除非输出数据足够小,单个工作器就能处理,否则应写入分片的输出文件。在最终的管道中,我们会将机场每小时的平均出发延误作为单个文件输出(这类数据只有几千条),而将航班信息输出分片到多个文件中(因为航班数据有几百万条)。
以下是一个完整的 Apache Beam 管道示例,它从指定输入文本文件读取数据,过滤出包含 “MIA” 的航班信息,并将结果写入一个未分片的文件:
p
.apply("ReadLines", TextIO.Read.from(options.getInput()))
.apply("FilterMIA", ParDo.of(new DoFn<String, String>() {
@ProcessElement
public void processElement(ProcessContext c) {
String input = c.element();
if (input.contains("MIA")) {
c.output(input);
}
}
}))
.apply("WriteFlights",
TextIO.Write.to(options.getOutput() + "flights2")
Cloud Dataflow航班数据处理与特征计算
超级会员免费看
订阅专栏 解锁全文
946

被折叠的 条评论
为什么被折叠?



