Query Kafka with SQL (GitHub live data)
在本教程中,您将处理来自 GitHub 的实时数据。 我们已经设置了一个可公开访问的 Kafka 集群,供您使用来自 Kafka 主题的数据。 如果您使用的是Timeplus Cloud,则还可以构建实时仪表板和警报。
阅读 GitHub 活动流
我们都喜欢 GitHub。 但是你知道Github现在的趋势是什么吗? 你知道在过去 10 分钟内哪些回购获得的推送量或 PR 评论最多的吗? https://github.com/trending 有每日/每周排行榜,但没有实时提要。
你可以编写一个使用专用 个人访问令牌 调用 GitHub Events API 的脚本。请注意,来自GitHub API的公共活动有5分钟的延迟([源代码](https://docs.github.com/en/rest/reference/activity#list-public-events))。
这里有一个 Python 脚本示例 供你参考。 但是我们已经允许通过Kafka API访问实时数据。
In Timeplus, you read data from Kafka via an External Stream. 以下是创建这样的外部流以从 Aiven 上的 Kafka 集群读取内容的 SQL:
CREATE EXTERNAL STREAM github_events
(
actor string,
created_at string,
id string,
payload string,
repo string,
type string
)
SETTINGS type = 'kafka',
brokers = 'kafka-public-read-timeplus.a.aivencloud.com:28864',
topic = 'github_events',
data_format='JSONEachRow',
sasl_mechanism = 'SCRAM-SHA-256',
username = 'readonly',
password = 'AVNS_MUaDRshCpeePa93AQy_',
security_protocol = 'SASL_SSL',
skip_ssl_cert_check=true
COMMENT 'an external stream to read GitHub events in JSON format from Aiven for Apache Kafka'
只需通过 Timeplus 网络用户界面中的 “Proton客户端” 或 SQL 控制台 运行这个 SQL 即可。 此 Kafka 用户配置为对主题/集群的只读访问权限。 我们可能会更改密码。 如果密码不起作用,请回来。
串流 SQL 示例
流尾巴
您可以通过以下方式浏览实时数据
从 github_events 中选择 *
这是一个流式的 SQL,会继续阅读 Kafka 主题中的新事件。 您需要手动取消查询才能终止查询。
流过滤器
在 WHERE 子句中添加一些条件以应用流过滤器,例如
从 github_events 中选择 * 其中 type='watchEvent'
聚合
全球聚合
从 github_events 中选择计数 (*)
这将显示自查询开始以来收到了多少新事件。 因此,你可能会看到像158这样的数字,然后在几秒钟后看到334这样的数字。
This is so-called Global Aggregation.