• ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。

1、ClickHouse的特点

1.1 列式存储

  • 以下面的表为例:

Read more »

1、简介

  • 如图所示,在Flink提供的多层级API中,核心是DataStream API,这是我们开发流处理应用的基本途径;底层则是所谓的处理函数(process function),可以访问事件的时间信 息、注册定时器、自定义状态,进行有状态的流处理。DataStream API和处理函数比较通用, 有了这些API,理论上我们就可以实现所有场景的需求了。

    1670071576954

Read more »

1、有状态算子

  • 在Flink中,算子任务可以分为无状态和有状态两种情况。

  • 无状态的算子任务只需要观察每个独立事件,根据当前输入的数据直接转换输出结果,如图所示。例如,可以将一个字符串类型的数据拆分开作为元组输出;也可以对数据做一些 计算,比如每个代表数量的字段加1。我们之前讲到的基本转换算子,如map、filter、flatMap, 计算时不依赖其他数据,就都属于无状态的算子。

Read more »

1、简介

  • 无论是基本的简单转换和聚合,还是基于窗口的计算,我们都是针对一条流上的数据进行处理的。而在实际应用中,可能需要将不同来源的数据连接合并在一起处理,也有可能需要将一条流拆分开,所以经常会有对多条流进行处理的场景。
  • 简单划分的话,多流转换可以分为“分流”和“合流”两大类。目前分流的操作一般是通过侧输出流(side output)来实现,而合流的算子比较丰富,根据不同的需求可以调用union、connect、join以及coGroup等接口进行连接合并操作。
    Read more »

1、简介

  • 之前所介绍的流处理 API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于DataStream进行转换的;所以可以统称为DataStream API,这也是Flink编程的核心。 而我们知道,为了让代码有更强大的表现力和易用性,Flink本身提供了多层API,DataStream API只是中间的一环,如图所示:

Read more »

1、简介

  • 我们已经了解了基本API的用法,熟悉了DataStream进行简单转换、聚合的一些操作。 除此之外,Flink还提供了丰富的转换算子,可以用于更加复杂的处理场景。
  • 在流数据处理应用中,一个很重要、也很常见的操作就是窗口计算。所谓的“窗口”,一般就是划定的一段时间范围,也就是“时间窗”;对在这范围内的数据进行处理,就是所谓的窗口计算。所以窗口和时间往往是分不开的。
    Read more »

1、简介

  • Flink有非常灵活的分层API设计,其中的核心层就是DataStream/DataSet API。由于新版本已经实现了流批一体,DataSet API将被弃用,官方推荐统一使用DataStream API处理流数据和批数据。

  • DataStream(数据流)本身是Flink中一个用来表示数据集合的类(Class),我们编写的Flink代码其实就是基于这种数据类型的处理,所以这套核心API就以DataStream命名。对于批处理和流处理,我们都可以用这同一套API来实现。

  • DataStream在用法上有些类似于常规的Java集合,但又有所不同。我们在代码中往往并不关心集合中具体的数据,而只是用API定义出一连串的操作来处理它们;这就叫作数据流的“转换”(transformations)。

    Read more »

1、初识Flink

1.1 Flink的源起和设计理念

  • Flink起源于一个叫作Stratosphere的项目,它是由3所地处柏林的大学和欧洲其他一些大学在2010~2014年共同进行的研究项目,由柏林理工大学的教授沃克尔·马尔科(Volker Markl) 领衔开发。2014年4月,Stratosphere的代码被复制并捐赠给了Apache软件基金会,Flink就是在此基础上被重新设计出来的。

  • 从命名上,我们也可以看出Flink项目对于自身特点的定位,那就是对于大数据处理,要做到快速和灵活。

    Read more »