1、Hive简介

1.1 Hive定义

  • Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

  • Hive是一个Hadoop客户端,用于将HQL(Hive SQL)转化成MapReduce程序

    • Hive中每张表的数据存储在HDFS。
    • Hive分析数据底层的实现是MapReduce(也可配置为Spark或者Tez)。
    • 执行程序运行在Yarn上。
Read more »

1、Explain查看执行计划

  • 在clickhouse20.6版本之前要查看SQL语句的执行计划需要设置日志级别为trace才能可以看到,并且只能真正执行sql,在执行日志里面查看。在20.6版本引入了原生的执行计划的语法。在20.6.3版本成为正式版本的功能。
Read more »

1、HDFS概述

1.1 HDFS产出背景及定义

  • HDFS产生背景:
    • 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种
  • HDFS定义:
    • HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
    • HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
      Read more »

  • 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 »