kafka sql入门

问题导读 1.kafka sql与数据库sql有哪些区别? 2.KSQL有什么作用? 3.KSQL流和表分别什么情况下使用?

KSQL,一个用于Apache Kafka流的SQL 引擎。 KSQL降低了流处理的入口,提供了一个简单而完整的交互式SQL接口,用于处理Kafka中的数据。 不再需要编写Java或Python代码! KSQL是开源的(Apache 2.0许可),分布式,可扩展,可靠且实时。 它支持各种强大的流处理操作,包括聚合,连接,窗口化,会话化等等。 例子

查询流数据意味着什么,与SQL数据库相比较 它实际上与SQL数据库完全不同。 大多数数据库用于按需查找和对存储数据的更改。 KSQL不进行查找(但是),它所做的是连续转换 - 即流处理。 例如,假设我有来自用户的点击流和信息表。 KSQL允许我对这个点击流和用户表进行建模,并将两者结合在一起。 即使这两件事中的一件是无限的。 所以KSQL运行的是连续查询 - 转换速度与它们一样快 - Kafka主题。 相反,对关系数据库的查询是一次性查询 KSQL作用 可以不断地查询无限的数据流,那有什么用? 1. 实时监控与实时分析相结合

[SQL] 纯文本查看 复制代码

?

CREATE TABLE error_counts AS
SELECT error_code, count(*)FROM monitoring_stream
WINDOW TUMBLING (SIZE 1 MINUTE)
WHERE type = 'ERROR'

它的一个用途是定义定制的业务级度量,这些度量是实时计算的,可以对其进行监视和警报,就像处理CPU负载一样。另一个用途是在KSQL中定义应用程序的正确性概念,并检查它在生产中运行时是否满足这个要求。当我们想到监视时,我们通常会想到计数器和测量器,它们跟踪低级别性能统计数据。这些类型的标尺通常可以告诉你CPU负载很高,但是它们不能真正告诉你应用程序是否正在执行它应该执行的任务。KSQL允许从应用程序生成的原始事件流中定义自定义度量,无论它们是记录事件、数据库更新还是其他类型。 例如,一个web应用程序可能需要检查每次新用户注册一个受欢迎的电子邮件时,一个新的用户记录被创建,他们的信用卡被计费。这些功能可能分布在不同的服务或应用程序上,您可能希望在一些SLA中监视每一个新客户的每一件事情,比如30秒。 2.安全性和异常检测

[SQL] 纯文本查看 复制代码

?

CREATE TABLE possible_fraud AS
SELECT card_number, count(*)
FROM authorization_attempts
WINDOW TUMBLING (SIZE 5 SECONDS)
GROUP BY card_number
HAVING count(*) > 3;

这个示例的一个简单版本是在上面的演示中看到的:KSQL查询将事件流转换为数字时间序列聚合,使用Kafka-Elastic连接器将其转换为弹性聚合,并在Grafana UI中进行可视化。安全用例通常看起来很像监视和分析。不是监视应用程序行为或业务行为,而是寻找欺诈、滥用、垃圾邮件、入侵或其他不良行为的模式。KSQL提供了一种简单、复杂和实时的方式来定义这些模式和查询实时流。 3.在线数据集成

[SQL] 纯文本查看 复制代码

?

CREATE STREAM vip_users AS
SELECT userid, page, action
FROM clickstream c 
LEFT JOIN users u ON c.userid = u.user_id
WHERE u.level = 'Platinum';

来自数据库,搜索,缓存或其他数据的数据库的数据的数据收集系统。 很长一段时间,ETL - 提取,转换和加载 - 已作为定期批处理作业执行。 例如,实时转储原始数据,然后每隔几小时转换一次,以实现高效查询。 对于许多用例,这种延迟是不可接受的。 KSQL与Kafka连接器一起使用时,可以实现从批量数据集成到在线数据集成的转变。 可以使用流表连接使用存储在表中的元数据来获取丰富的数据流,或者在将流加载到另一个系统之前对PII(个人身份信息)数据进行简单过滤。 4.应用程序开发 许多应用程序将输入流转换为输出流。 例如,负责重新排序在线商店库存不足的产品的流程。 对于用Java编写的更复杂的应用程序,Kafka的本机API流可能就是这样。 但是对于简单的应用程序,或者对Java编程不感兴趣的团队,一个简单的SQL接口可能就是他们想要的。 KSQL的核心抽象 KSQL在内部使用Kafka的API Streams,它们共享相同的核心抽象,用于Kafka上的流处理。 KSQL中有两个可以由Kafka Streams操作的核心抽象,允许操作Kafka主题: 1.流:流是结构化数据的无界序列(“facts”)。 例如,我们可以进行一系列金融交易,例如“爱丽丝给鲍勃闻100美元,然后查理给鲍勃闻50美元”。 流中的事实是不可变的,这意味着可以将新事实插入到流中,但不能更新或删除。 可以从Kafka主题创建流,也可以从现有流和表派生流。

[SQL] 纯文本查看 复制代码

?

CREATE STREAM pageviews (viewtime BIGINT, userid VARCHAR, pageid VARCHAR) 
WITH (kafka_topic='pageviews', value_format=’JSON’);

2.表:表是流或另一个TABLE的视图,表示不断变化的事实的集合。 例如,我们可以有一个表格,其中包含最新信息“Bob的当前账户余额为150美元”。 它相当于传统的数据库,但它通过流式语义(如窗口)来丰富。 表中的事实是可变的,这意味着可以将新事实插入表中,并且可以更新或删除现有事实。 可以从Kafka主题创建表,也可以从现有流和表派生表。

[SQL] 纯文本查看 复制代码

?

CREATE TABLE users (registertime BIGINT, gender VARCHAR, regionid VARCHAR, userid  VARCHAR) 
WITH (kafka_topic='users', value_format='DELIMITED');

KSQL简化了流式应用程序,因为它完全集成了表和流的概念,允许允许join表表示流的当前状态,代表正在发生的event。Apache kafka中的一个主题可以表示为KSQL中的流或表,这取决于主题上的处理的预期语义。例如,如果想将主题中的数据作为一系列独立值读取,则可以使用创建流。这样的流的一个示例是捕获页面视图事件的主题,其中每个页面视图事件是无关的并且独立于另一个。另一方面,如果要将主题中的数据作为可更新的值的集合来读取,则可以使用CREATE表。在KSQL中应该作为一个表读取的主题的一个示例是捕获用户元数据,其中每个事件代表特定用户ID的最新元数据,无论是用户的名称、地址还是首选项。 KSQL实战:实时点击流分析和异常检测 让我们来看一个真正的演示。 该演示展示了如何使用KSQL进行实时监控,异常检测和警报。 点击流数据的实时日志分析可以采用多种形式。 在此示例中,我们标记了在Web服务器上占用过多带宽的恶意用户会话。 监控恶意用户会话是会话化的众多应用之一。 但从广义上讲,会话是用户行为分析的基石。 可以将用户和事件关联到特定的身份识别会话,可以构建多种类型的分析,从简单的指标(如访问次数)到更复杂的指标(如客户转化渠道和事件流)。 我们通过展示如何在由Elastic支持的Grafana仪表板上实时可视化KSQL查询的输出来展示此演示。 相关视频和代码 视频链接:

https://pan.baidu.com/s/1vMdRDwkQPZu4U8rwSpm6PQ 密码:u5k2 代码: 你也可以按照说明

(https://github.com/confluentinc/ksql/tree/0.1.x/ksql-clickstream-demo#clickstream-analysis )写代码 KSQL集群 有一个KSQL服务器进程执行查询。 一组KSQL进程在集群上运行。你可以通过启动KSQL服务器来动态添加更多处理容量。 这些实例是容错的:如果一个失败,其他实例将接管其工作。 使用交互式KSQL命令行客户端启动查询,该客户端通过REST API将命令发送到集群。 命令行允许检查可用的流和表,发出新查询,检查状态和终止运行查询。 内部KSQL使用Kafka的API Streams构建; 它继承了其弹性可扩展性,高级状态管理和容错能力,并支持Kafka最近推出的一次性处理语义。 KSQL服务器具有分布式SQL引擎,并具有用于查询和控制的REST API。

Kafka + KSQL内部与数据库对比 我们已经讨论过将数据库内部化,我们通过在内向外数据库中添加SQL层来实现它。 在关系数据库中,表是核心抽象,日志是实现细节。 在以事件为中心,与数据库相反,核心抽象不是表格; 是日志。 表仅来自日志,并且随着新数据到达日志而连续更新。 日志是kafka,KSQL引擎,允许创建所需的实化视图并将它们表示为连续更新表。 然后,您可以针对此类流表运行时间点查询(即将推出KSQL),以持续的方式获取日志中每个键的最新值。

Kafka日志是流数据的核心存储抽象,允许离线数据仓库使用数据。 其他所有内容都是日志的流媒体物化视图,无论是各种数据库,搜索索引还是公司的其他数据服务系统。 所有数据丰富和ETL都需要使用KSQL以流媒体方式创建。 监控,安全性,异常和威胁检测,分析以及对故障的响应可以实时完成。 所有这些都可用于简单的SQL到Kafka数据。

转载注明来自about云 本文链接 http://www.aboutyun.com/forum.php?mod=viewthread&tid=24854

精彩文章推荐:

【1】区块链零基础学习线路

【2】spark零基础学习线路指导【包括spark2】

【3】通俗易懂:彻底明白什么是神经网络

【4】小白与大神存在哪些差距

【5】腾讯大数据面试及参考答案

【6】kafka学习线路指导入门:包括理论、部署、实战知识汇总整理

【7】技术走向管理一些深度思考

原文发布于微信公众号 - about云(wwwaboutyuncom)

原文发表时间:2018-07-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

【Dev Club 分享】微信 iOS SQLite 源码优化实践

Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾...

3768
来自专栏Albert陈凯

2018-05-23 记录一下昨天开发的一个业务功能

1003
来自专栏喵了个咪的博客空间

phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)

#phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)# ? ##前言## 时隔半个月随着PHP7的推出为PHP打了一瓶兴奋剂,在性能提升了一倍的情况...

3709
来自专栏Hadoop数据仓库

HAWQ取代传统数仓实践(十四)——事实表技术之累积快照

一、累积快照简介         累积快照事实表用于定义业务过程开始、结束以及期间的可区分的里程碑事件。通常在此类事实表中针对过程中的关键步骤都包含日期外键,并...

4315
来自专栏ytkah

finecms5采集接口下载

  哪里有finecms采集接口可以下载?我们在用finecms建站时比较纠结的是要如何采集文章,finecms商城是有售卖采集插件,价格是50元,有些朋友感觉...

3514
来自专栏大数据和云计算技术

新数仓系列:Hbase周边生态梳理(1)

本文简单梳理下其中一个应用比较广的HBASE的生态,可能不全,有更多的请大家留言。具体HBASE的基本原理扫描大家可以自行百度下,另外,要系统掌握HBASE,推...

4637
来自专栏杨建荣的学习笔记

Oracle和MySQL的高可用方案对比(二)

昨天聊了一篇关于高可用方案中Oracle的RAC和MySQL的MHA的对比。 今天来说下Oracle的DG和MySQL的方案对比,相比来说,可能这方面MySQ...

3435
来自专栏程序员互动联盟

数据库常见的图形工具有哪些?

疑惑一 MySQL常用的图形化管理工具有哪些? 现在随着PHP+MySql越来越火,周边相关产品也受到众多人的关注。在PC上修改数据库,查看数据库内容是研发人员...

5359
来自专栏xingoo, 一个梦想做发明家的程序员

循序渐进,了解Hive是什么!

一直想抽个时间整理下最近的所学,断断续续接触hive也有半个多月了,大体上了解了很多Hive相关的知识。那么,一般对陌生事物的认知都会经历下面几个阶段: ...

2525
来自专栏PHP在线

mongodb与mysql相比的优缺点

与关系型数据库相比,MongoDB的优点: ①弱一致性(最终一致),更能保证用户的访问速度: 举例来说,在 传统的关系型数据库中,一个COUNT类型的操作会锁...

8645

扫码关注云+社区

领取腾讯云代金券