Streams

KSQL: Streaming SQL for Apache Kafka

假装没事ソ 提交于 2020-05-07 22:11:01
Few weeks back, while I was enjoying my holidays in the south of Italy, I started receiving notifications about an imminent announcement by Confluent . Reading the highlights almost (...I said almost) made me willing to go immediately back to work and check all the details about it. The announcement regarded KSQL : a streaming SQL engine for Apache Kafka! My office today... not bad! #sea pic.twitter.com/A7skHIcplS — Francesco Tisiot (@FTisiot) August 7, 2017 Before going in detail, lets try to clarify the basics: what is KSQL? Why was it introduced and how does it complement Kafka? What is

重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎 2017.8.29

我们两清 提交于 2020-05-07 22:09:25
Kafka 的作者 Neha Narkhede 在 Confluent 上发表了一篇 博文 ,介绍了Kafka 新引入的KSQL 引擎——一个基于流的SQL。推出KSQL 是为了降低流式处理的门槛,为处理Kafka 数据提供简单而完整的可交互式SQL 接口。KSQL 目前可以支持多种流式操作,包括聚合(aggregate)、连接(join)、时间窗口(window)、会话(session),等等。 与传统 SQL 的主要区别 KSQL 与关系型数据库中的 SQL 还是有很大不同的。传统的 SQL 都是即时的一次性操作,不管是查询还是更新都是在当前的数据集上进行。而 KSQL 则不同,KSQL 的查询和更新是持续进行的,而且数据集可以源源不断地增加。KSQL 所做的其实是转换操作,也就是流式处理。 KSQL 的适用场景 1. 实时监控 一方面,可以通过 KSQL 自定义业务层面的度量指标,这些指标可以实时获得。底层的度量指标无法告诉我们应用程序的实际行为,所以基于应用程序生成的原始事件来自定义度量指标可以更好地了解应用程序的运行状况。另一方面,可以通过 KSQL 为应用程序定义某种标准,用于检查应用程序在生产环境中的行为是否达到预期。 2. 安全检测 KSQL 把事件流转换成包含数值的时间序列数据,然后通过可视化工具把这些数据展示在 UI 上,这样就可以检测到很多威胁安全的行为

Kafka kSQL sql查询

谁都会走 提交于 2020-05-07 21:18:22
背景 kafka早期作为一个日志消息系统,很受运维欢迎的,配合ELK玩起来很happy,在kafka慢慢的转向流式平台的过程中,开发也慢慢介入了,一些业务系统也开始和kafka对接起来了,也还是很受大家欢迎的,由于业务需要,一部分小白也就免不了接触kafka了,这些小白总是会安奈不住好奇心,要精确的查看kafka中的某一条数据,作为服务提供方,我也很方啊,该怎么怼?业务方不敢得罪啊,只能写consumer去消费,然后人肉查询。 需求 有什么方法能直接查询kafka中已有的数据呢?那时候presto就映入眼帘了,初步探索后发现presto确实强大,和我们在用的impala有的一拼,支持的数据源也更多,什么redis、mongo、kafka都可以用sql来查询,真是救星啊,这样那群小白就可以直接使用presto来查询里面的数据了。不过presto在不开发插件的情况下,对kafka的数据有格式要求,支持json、avro。关于presto的调研见 presto实战 。但是我只是想用sql查询kafka,而presto功能过于强大,必然整个框架就显得比较厚重了,功能多嘛。有什么轻量级的工具呢? 介绍 某一天,kafka的亲儿子KSQL就诞生了,KSQL是一个用于Apache kafka的流式SQL引擎,KSQL降低了进入流处理的门槛,提供了一个简单的、完全交互式的SQL接口

Java并发编程中的若干核心技术,向高手进阶!

谁说胖子不能爱 提交于 2020-05-07 14:48:42
来源:简书 http://www.jianshu.com/p/5f499f8212e7 引言 本文试图从一个更高的视角来总结Java语言中的并发编程内容,希望阅读完本文之后,可以收获一些内容,至少应该知道在Java中做并发编程实践的时候应该注意什么,应该关注什么,如何保证线程安全,以及如何选择合适的工具来满足需求。 当然,更深层次的内容就会涉及到JVM层面的知识,包括底层对Java内存的管理,对线程的管理等较为核心的问题,当然,本文的定位在于抽象与总结,更为具体而深入的内容就需要自己去实践,考虑到可能篇幅过长、重复描述某些内容,以及自身技术深度等原因,本文将在深度和广度上做一些权衡,某些内容会做一些深入的分析,而有些内容会一带而过,点到为止。 总之,本文就当是对学习Java并发编程内容的一个总结,以及给那些希望快速了解Java并发编程内容的读者抛砖引玉,不足之处还望指正。 Java线程 一般来说,在java中实现高并发是基于多线程编程的,所谓并发,也就是多个线程同时工作,来处理我们的业务,在机器普遍多核心的今天,并发编程的意义极为重大,因为我们有多个cpu供线程使用,如果我们的应用依然只使用单线程模式来工作的话,对极度浪费机器资源的。所以,学习java并发知识的首要问题是:如何创建一个线程,并且让这个线程做一些事情? 这是java并发编程内容的起点,下面将分别介绍多个创建线程

HashMap 的 7 种遍历方式与性能分析,高薪必学

别等时光非礼了梦想. 提交于 2020-05-05 14:39:25
随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题。 本文先从 HashMap 的遍历方法讲起,然后再从性能、原理以及安全性等方面,来分析 HashMap 各种遍历方式的优势与不足,本文主要内容如下图所示: 这里也要注意:不管你是为了JAVA高薪还是爱好,记住:项目开发经验永远是核心,如果你没有最新JAVA架构实战视频教程及大厂面试宝典,可以去小编的Java架构学习.裙 :七吧伞吧零而衣零伞 (数字的谐音)转换下可以找到了,里面很多新JAVA架构项目教程,还可以跟老司机交流讨教! HashMap 遍历 HashMap 遍历从大的方向来说,可分为以下 4 类: 迭代器(Iterator)方式遍历; For Each 方式遍历; Lambda 表达式遍历(JDK 1.8+); Streams API 遍历(JDK 1.8+)。 但每种类型下又有不同的实现方式,因此具体的遍历方式又可以分为以下 7 种: 使用迭代器(Iterator)EntrySet 的方式进行遍历; 使用迭代器(Iterator)KeySet 的方式进行遍历; 使用 For Each EntrySet 的方式进行遍历; 使用 For Each KeySet 的方式进行遍历; 使用 Lambda 表达式的方式进行遍历; 使用

第7章 按值传递或按引用传递:7.5 处理返回值

血红的双手。 提交于 2020-05-04 14:24:56
7.5 Dealing with Return Values 7.5 处理返回值 For return values, you can also decide between returning by value or by reference. However, returning references is potentially a source of trouble, because you refer to something that is out of your control. There are a few cases where returning references is common programming practice: 函数的返回值也可以按值或按引用返回。但是如果按引用返回,可能会潜在一些问题。因为你引用的对象可能是一个己经失去控制的东西。在以下几种情况中,返回引用是一种常见的编程经验:   • Returning elements of containers or strings (e.g., by operator[] or front())   返回容器或字符串中的元素(如,通过[ ]运算符或front()函数)   • Granting write access to class members   允许修改类对象的成员   •

Flutter 86: 初识状态管理 Bloc (一)

心不动则不痛 提交于 2020-05-04 08:41:47
小菜以前尝试过 provider 状态管理工具,简单便捷;但在新的项目中,相关同学采用的是 Bloc 状态管理工具,且前段时间何时简单了解了 Stream 相关知识,因此趁机学习一下基本的 Bloc 相关的内容; Bloc Bloc 可以方便的把样式与业务逻辑区分开,从而使开发更便捷,可重用性更好,测试也更加方便; 在使用 Bloc 之前需要提前了解一下如下几个概念; Event Event 事件作为 Bloc 的输入,一般是为了响应用户交互(例如按钮按下)或生命周期事件(例如页面加载)而添加它们。可以使用枚举类型定义事件类,对于相对复杂的事件可以联合业务定义为 class ; enum TestEvent { onEvent1, onEvent2 ... onEventN} States States 状态作为 Bloc 的输出,一般用于 UI 状态的更新,页面更新绘制等;一般需要定义不同的数据类型来表示数据状态的变更; class TestState { final int state1; final String state2; ... final User stateN; TestState(this.state1, this.state2 ... this.stateN); } Transitions Transitions 转场作为从一个状态到下一个状态的过度

发家致富靠AI:使用keras预测NBA比赛赚钱,回报率136%

六月ゝ 毕业季﹏ 提交于 2020-05-02 16:00:20
投注者和博彩者没有太多共同点——人们可以把他们的关系描述为一场竞争、决斗、战争。但在梦中,他们却为同样的幻想而垂涎三尺:一个完美的预测模型,使用它能够精确地预测出未来游戏的结果。通过深入学习,这或许是可能的——或者至少比以前的数据科学技术更容易。 基本假设是NBA市场效率低下(价格或投注线并不能反映出所有可用信息),而且可能比大多数市场效率更低,因为铁杆球迷倾向于只赌他们最喜欢的球队。如果你能对市场的低效率下赌注,你就能赚钱。我们识别低效率的方法之一是通过数据分析。 尽管许多尝试这一挑战的模型都是准确的,但大多数模型离盈利还差得很远。原因很简单:博彩公司也非常准确。即使你能达到博彩公司的准确性,你也会因为5%的投注费而失败。 图表是365net的预测线与实际的赢取百分比。一个成功的模型必须能够通过完美的回归分析预测博彩公司的微小波动。 我的模型是用带有Tensorflow的Python构建的,它分析了过去11个NBA赛季,并且在很多方面与其他的深度学习模型相似(后者经常被试图用于解决这个问题)。但是我们的模型有一个关键的区别——它使用了一个自定义的损失函数来剔除与博彩公司的相关性。我们正在挑选博彩公司错误预测获胜百分比的游戏。 去相关损失公式-这很重要!!!!!!! 源码 模型结构 我用 nba_api Python库 抓取了得分记录。数据存储在MongoDB集合中

fail-safe fail-fast知多少

心不动则不痛 提交于 2020-05-02 15:55:45
文章目录 简介 Fail-fast Iterator Fail-fast 的原理 Fail-safe Iterator 总结 fail-safe fail-fast知多少 简介 我们在使用集合类的时候,通常会需要去遍历集合中的元素,并在遍历中对其中的元素进行处理。这时候我们就要用到Iterator,经常写程序的朋友应该都知道,在Iterator遍历的过程中,是不能够修改集合数据的,否则就会抛出ConcurrentModificationException。 因为ConcurrentModificationException的存在,就把Iterator分成了两类,Fail-fast和Fail-safe。 Fail-fast Iterator Fail-fast看名字就知道它的意思是失败的非常快。就是说如果在遍历的过程中修改了集合的结构,则就会立刻报错。 Fail-fast通常在下面两种情况下抛出ConcurrentModificationException: 单线程的环境中 如果在单线程的环境中,iterator创建之后,如果不是通过iterator自身的remove方法,而是通过调用其他的方法修改了集合的结构,则会报错。 多线程的环境中 如果一个线程中创建了iterator,而在另外一个线程中修改了集合的结构,则会报错。 我们先看一个Fail-fast的例子: Map <

Python3 异步编程之进程与线程

两盒软妹~` 提交于 2020-05-01 03:25:09
Python3 异步编程之进程与线程-1 一、 了解进程间通信 进程间通信 进程 线程 线程 vs 进程 IO模型 并发 vs 并行 异步 vs 同步 二、多线程与多进程的用法 计算密集型 vs I/O密集型 GIL 多线程 多进程 三、协程的好处与用法 协程 yield yield from 四、进程间通信-IPC 01 管道:无名管道和命名管道(FIFO) 消息队列 信号量 共享存储 Socket Streams 相关定义: 管道: 命名管道: 消息队列: 信号量: 共享内存: 元子操作: 五、进程特征 动态性 并发性 独立性 异步性 六、进程状态 运行 running 占用了CPU正在运行 就绪 ready 等待CPU 阻塞 blocked 暂时不具备运行条件,即使CPU空闲 相关定义: 进程控制块: Unix系统中的几个进程控制操作: 线程: 线程之间共享: 线程的独立信息: 线程的创建: 七、了解进程间通信02 I/O模型 阻塞式 非阻塞式 I/O复用 信号驱动式 异步I/O 相关定义: I/O操作的两个阶段: 阻塞式I/O: 非阻塞式I/O: I/O复用: 信号驱动式: 异步I/O: 并发和并行: 异步与同步: 异步的实现: 处理多任务操作: 多进程/多线程 I/O模型 协程 多线程、多进程实现模式:master worker模式 master分配任务 多进程缺点