亚马逊AWS官方博客
Kinesis Data Analytics Studio 和Python交互式开发自定义聚合查询
Amazon Kinesis Data Analytics Studio 使客户能够轻松地实时分析流数据,并使用标准SQL、Python和Scala构建由Apache Flink 支持的流处理应用程序。 只需在AWS管理控制台中单击几下,客户就可以启动serverless notebook来查询数据流并在几秒钟内获得结果。
Apache Flink是一个用于处理数据流的开源框架和引擎。它具有高可用性和可扩展性,为流处理应用程序提供了高吞吐量和低延迟。Kinesis Data Analytics降低了构建和管理Apache Flink应用程序的复杂性。
运行Apache Flink工作负载的客户面临着一个艰巨的挑战: 开发他们的分布式流处理应用程序,却无法真正了解他们的应用程序执行的数据处理步骤。Kinesis Data Analytics Studio将Apache Zeppelin 笔记本电脑的易用性与Apache Flink处理引擎的强大功能相结合,在完全管理的产品中提供高级流式分析功能。此外,它还加快了流处理应用程序的开发和运行,从而不断生成实时见解。
在本文中,我们将向您介绍Kinesis Data Analytics Studio,并开始使用Apache Flink(Pyflink)的Python API从Amazon Kinesis数据流交互式查询数据。本文我们使用Kinesis Data Stream作为数据源。Kinesis Data Analytics Studio还与Amazon Managed Streaming for Apache Kafka(Amazon MSK)、Amazon Simple Storage Service(Amazon S3)以及Apache Flink支持的各种其他数据源兼容。
准备:
- Kinesis Data Stream
- Cloud9
创建 Kinesis Data Stream
进入Cloud9, 新建一个terminal,并执行下列cli创建一个名为teststream的消息队列:
创建一个Kinesis Data Analytics Studio notebook
您可以通过以下步骤开始与数据流交互:
- 打开AWS管理控制台并导航至Amazon Kinesis/Data Analytics/Streaming applications
- 选择主页上的Studio选项卡,然后选择Create Studio Notebook。
- 选择Create with custom settings, 输入Studio笔记本的名称,并让Kinesis Data Analytics Studio为此创建AWS IAM角色。
- 选择一个AWS Glue数据库来存储Kinesis Data Analytics Studio使用的源和目标周围的元数据。
- 选择创建Studio notebook。
创建应用程序后,选择Run以启动Apache Flink应用程序。这将需要几分钟的时间来完成,此后可以点击Open in Apache Zeppelin打开。
在Cloud9中创建样本数据
在cloud9中创建ticker.py文件,并复制如下代码到文件内并保存
运行代码,程序会将模拟的数据发送到Kinesis中。这里注意,由于Cloud9使用临时凭证,所以有可能会出现token过期的问题,重新运行即可。
编写Studio代码实现自定义聚合
首先我们创建一个source table,用于定义数据的schema以及watermark:
点击右上角的执行按钮,然后添加新的paragraph并拷贝自定义聚合函数,这里我们定义计算窗口内的蜡烛图四元组,最大值,最小值,初始值和最新值:
创建新的paragraph,粘贴主程序,调用自定义聚合函数,我们定义一个10秒钟的窗口方便数据观察:
最后一个paragraph我们用来展示我们聚合后的结果:
点击执行后,我们会很快接收到数据并生成窗口:
我们还可以通过不同的可视化图形来观察数据
同时,同传统的应用一样,Studio提供了Apache Flink Dashboard, 方便查询程序运行时的状况。
总结:
Kinesis Data Analytics Studio使Apache Flink应用程序开发的速度大大加快。此外,所有这些都是通过丰富的可视化、可扩展且用户友好的界面来实现的,并能协作开发,灵活选择语言,使得流式工作负载性能强大。用户可以按照本文所述段落,或者选择将他们升级为具有持久状态的针对Apache Flink的Kinesis Data Analytics应用程序。
参考文档:
https://zeppelin.apache.org/docs/0.9.0/interpreter/flink.html
https://docs.aws.amazon.com/kinesisanalytics/latest/java/how-notebook.html