开放可编程API(兼容Apache Beam)
除了SQL这样高层的描述语言和用户自定义逻辑(UDF),StreamCompute还支持Apache Beam API,以提供更为灵活的实时逻辑编程。Beam是一个统一开放的大数据应用编程接口,可以同时描述离线和在线逻辑,最早由Google提出。Beam提供了功能丰富的编程接口,能有效的处理有界、无界、乱序的数据流输入。 下面显示了通过Beam实现的流式WordCount的例子:
1.指定Runner(底层计算引擎)创建一个Pipeline。
2.使用Source在Pipeline上生成一个PCollection,输入数据。
3.对PCollection应用Transforms操作,比如wordCount中的count操作。
4.对最后的PCollection应用Sink,输出结果到外部存储中。
5.Run Pipeline到底层的计算引擎中。
使用Beam实现WordCount代码样例
public static class CountWords extends PTransform,
PCollection>> {
@Override
public PCollection> apply(PCollection lines) {
// Convert lines of text into individual words.
PCollection words = lines.apply(
ParDo.of(new ExtractWordsFn()));
// Count the number of times each word occurs.
PCollection> wordCounts =
words.apply(Count.perElement());
return wordCounts;
}
}
借助Beam,用户可以利用高性能的StreamCompute引擎,定制面向特定领域的系统交互接口。同时,StreamCompute今后也将兼容更多生态(如Spark Streaming和Flink Streaming API)。