大数据技术与实践学习笔记(3 of 3,from hitwh)

大数据技术概览:Hive、Spark与数据理解

大数据技术与实践

注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章(1 of 3)开头提供了原版文章的 pdf 资源下载,推荐下载 pdf 后观看,或评论区联系我获取下载链接

3.4-Hive

一、概述

Hive简介
  1. Hive是一个构建于Hadoop顶层的数据仓库工具

    image-20230617102438315
    • 依赖分布式文件系统HDFS存储数据

    • 依赖分布式并行计算模型MapReduce处理数据

      image-20230617102506062 image-20230617102540439
  2. Hive具有的特点非常适用于数据仓库。

    • 采用批处理方式处理海量数据
      • Hive需要把HiveQL语句转换成MapReduce任务进行运行;
      • 数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不 需要快速响应给出结果,而且数据本身也不会频繁变化。
    • 提供适合数据仓库操作的工具
      • Hive本身提供了一系列对数据进行提取转化加载的工具,可以存储、查询 和分析存储在Hadoop中的大规模数据;
      • 非常适合数据仓库应用程序维护海量数据、对数据进行挖掘、形成意见和 报告等
Hive与Hadoop生态系统中其他组件的关系
image-20230617102658440
  1. Hive依赖于HDFS 存储数据,HDFS作为高可靠性的底层存储,用来存储海量数据
  2. Hive依赖于MapReduce 处理数据
    • MapReduce对这些海量数据进行处理,实现高性能计算,用HiveQL语句编 写的处理逻辑最终均要转化为MapReduce任务来运行
  3. Pig可以作为Hive的替代工具
    • pig是一种数据流语言和运行环境,适合用于Hadoop和MapReduce平台上 查询半结构化数据集。常用于ETL过程的一部分,即将外部数据装载到 Hadoop集群中,然后转换为用户期待的数据格式
  4. HBase 提供数据的实时访问
    • HBase一个面向列的、分布式的、可伸缩的数据库,它可以提供数据的实时 访问功能,而Hive只能处理静态数据,主要是BI报表数据,所以HBase与 Hive的功能是互补的,它实现了Hive不能提供功能。
Hive与传统数据库的对比分析
  1. Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是HDFS和 MapReduce,所以在很多方面又有别于传统数据库。

    image-20230617102914314
Hive在企业中的部署案例
  1. 构建于Hadoop上的数据仓库,除了依赖于Hadoop的基本组件HDFS 和MapReduce外,还结合使用了Hive、Pig、HBase与Mahout

    image-20230617102950551
  2. Hive在报表中心的应用流程:

    image-20230617103009115
  3. image-20230617103045227

二、Hive系统架构

  1. Hive对外访问接口概述

    image-20230617103129155
  2. Hive HA基本原理

    • 【Hive High Availability】:高可用性Hive解决方案

    • Hive很多时候会表现出不稳定性

      image-20230617103237523

三、Hive工作原理

SQL语句转换成MapReduce的基本原理
  1. Hive本身不做具体的数据处理和存储

    Hive把SQL语句转换成相关的MapReduce作业

  2. 两个步骤:

    • SQL语句转换成MapReduce作业的基本原理
    • Hive中SQL查询转换成MapReduce作业的过程
  3. join的实现原理

    image-20230617103452348
  4. group by的实现原理

    image-20230617103506549
Hive中SQL查询转换成MapReduce作业的过程
  1. 步骤:
    • 驱动模块接收该命令或查询编译器
    • 对该命令或查询进行解析编译
    • 由优化器对该命令或查询进行优化计算
    • 该命令或查询通过执行器进行执行
  2. image-20230617103727962 - 当启动MapReduce程序时,Hive本身是不会生成MapReduce算法程序的。 - 需要通过一个表示“job执行计划”的XML文件驱动执行内置的、原生的 Mapper和Reducer模块。 - Hive通过和JobTracker通信来初始化MapReduce任务,不必直接部署在 JobTracker所在的管理节点上执行。 - 通常在大型集群上,会有专门的网关机来部署Hive工具。网关机的作用主 要是远程操作和管理节点上的JobTracker通信,来执行任务。 - 数据文件通常存储在HDFS上,HDFS由NameNode节点管理。
  3. 过程说明:
    • 当启动MapReduce程序时,Hive本身是不会生成 MapReduce程序的
    • 需要通过一个表示“Job执行计划”的XML文件驱动执行内置 的、原生的Mapper和Reducer模块
    • Hive通过和JobTracker通信来初始化MapReduce任务,不必 直接部署在JobTracker所在的管理节点上执行
    • 通常在大型集群上,会有专门的网关机来部署Hive工具
    • 数据文件通常存储在HDFS上,HDFS由名称节点管理

四、Impala

Impala简介
  1. Impala是由Cloudera公司开发的新型查询系统,它提供SQL语义,能 查询存储在Hadoop的HDFS和HBase上的PB级大数据。

  2. Impala最开始是参照 Dremel系统进行设计的,Impala的目的不在于 替换现有的MapReduce工具,而是提供一个统一的平台用于实时查询。

    image-20230617103959954
Impala系统架构
  1. image-20230617104019006
  2. image-20230617104032882
Impala查询过程
image-20230617104148772
Impala 与Hive的比较
image-20230617104217587

(全是图,也没有比较,太抽象了)

五、Hive编程实践

Hive的安装与配置
  1. Hive安装

    安装Hive之前需要安装jdk1.6以上版本以及启动Hadoop

    • 下载安装包apache-hive-1.2.1-bin.tar.gz 下载地址:http://www.apache.org/dyn/closer.cgi/hive/
    • 解压安装包apache-hive-1.2.1-bin.tar.gz至路径 /usr/local
    • 配置系统环境,将hive下的bin目录添加到系统的path中
  2. Hive配置

    • Hive有三种运行模式,单机模式、伪分布式模式、分布式模式。 均是通过修改hive-site.xml文件实现,如果 hive-site.xml文件不存 在,我们可以参考$HIVE_HOME/conf目录下的hivedefault.xml.template文件新建。
Hive的数据类型
  1. Hive的基本数据类型

    image-20230617104459003
  2. Hive的集合数据类型

    image-20230617104520532
Hive基本操作
  1. create: 创建数据库、表、视图

    image-20230617104559463 image-20230617104615054

3.5-Spark

一、Spark概述

Spark简介
  1. Spark最初由美国加州伯克利大学(UCBerkeley)的AMP 实验室于2009年开发,是基于内存计算的大数据并行计算 框架,可用于构建大型的、低延迟的数据分析应用程序

    • 2013年Spark加入Apache孵化器项目后发展迅猛,如今已 成为Apache软件基金会最重要的三大分布式计算系统开源 项目之一(Hadoop、Spark、Storm)
    • Spark在2014年打破了Hadoop保持的基准排序纪录
      • Spark/206个节点/23分钟/100TB数据
      • Hadoop/2000个节点/72分钟/100TB数据
      • Spark用十分之一的计算资源,获得了比Hadoop快3倍 的速度
  2. Spark具有如下几个主要特点:

    • 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算
    • 容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过 Spark Shell进行交互式编程
    • 通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算 、机器学习和图算法组件
    • 运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也 可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、 HBase、Hive等多种数据源
  3. Spark如今已吸引了国内外各大公司的注意,如腾讯、淘宝、百度、亚马 逊等公司均不同程度地使用了Spark来构建大数据分析应用,并应用到实 际的生产环境中

    image-20230617104949237
Scala简介
  1. Scala是一门现代的多范式编程语言,运行于Java平台(JVM,Java 虚 拟机),并兼容现有的Java程序。Scala的特性:
    • Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统
    • Scala语法简洁,能提供优雅的API
    • Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中
  2. Scala是Spark的主要编程语言,但Spark还支持Java、Python、R 作为编程语言
  3. Scala的优势是提供了REPL(Read-Eval-Print Loop,交互式解释 器),提高程序开发效率
Spark与Hadoop的对比
  1. Hadoop存在如下一些缺点:

    • 表达能力有限
    • 磁盘IO开销大
    • 延迟高
      • 任务之间的衔接涉及IO开销
      • 在前一个任务执行完成之前,其他任务就无法开始,难以 胜任复杂、多阶段的计算任务
  2. Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了 MapReduce所面临的问题。相比于Hadoop MapReduce,Spark主要具有如下优点:

    • Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作, 还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活
    • Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率 更高
    • Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭 代执行机制
  3. Hadoop与Spark的执行流程对比

    image-20230617105339979
    • 使用Hadoop进行迭代计算非常耗资源

    • Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果 作运算,避免了从磁盘中频繁读取数据

      image-20230617105413419

二、Spark生态系统

  1. 在实际应用中,大数据处理主要包括以下三个类型:

    • 复杂的批量数据处理:通常时间跨度在数十分钟到数小时 之间
    • 基于历史数据的交互式查询:通常时间跨度在数十秒到数 分钟之间
    • 基于实时数据流的数据处理:通常时间跨度在数百毫秒到 数秒之间
  2. 当同时存在以上三种场景时,就需要同时部署三种不同的软件

    image-20230617105518413
    • 这样做难免会带来一些问题:
      • 不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格 式的转换
      • 不同的软件需要不同的开发和维护团队,带来了较高的使用成本
      • 比较难以对同一个集群中的各个系统进行统一的资源协调和分配
  3. Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐 渐形成了一套完整的生态系统。

    • 既能够提供内存计算框架,也可以支持SQL即席查询、实时流式 计算、机器学习和图计算等
    • Spark可以部署在资源管理器YARN之上,提供一站式的大数据解 决方案
    • 因此,Spark所提供的生态系统足以应对上述三种场景,即同时 支持批处理、交互式查询和流数据处理
  4. Spark生态系统已经成为伯克利数据分析软件栈BDAS(Berkeley Data Analytics Stack)的重要组成部分

    image-20230617105623466
  5. Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、 MLLib和GraphX 等组件

    image-20230617105637914
  6. Spark生态系统组件的应用场景

    image-20230617105657261

三、Spark运行架构

基本概念
  1. RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分 布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
  2. DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的 依赖关系
  3. Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task
  4. Application:用户编写的Spark应用程序
  5. Task:运行在Executor上的工作单元
  6. Job:一个Job包含多个RDD及作用于相应RDD上的各种操作
  7. Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称 为Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有 Shuffle依赖关系的任务组成的任务集
架构设计
  1. 与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:

    • 一是利用多线程来执行具体的任务,减少任务的启动开销

    • 二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为 存储设备,有效减少IO开销

      image-20230617105825156
  2. 一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成, 一个Stage由多个没有Shuffle关系的Task组成。当执行一个Application时,Driver会向集群管理器申请资源,启动Executor, 并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行 结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中

    image-20230617105914015
Spark运行基本流程
  1. 基本流程
    • 首先为应用构建起基本的运 行环境,即由Driver创建一个 SparkContext,进行资源的申请、 任务的分配和监控
    • 资源管理器为Executor分配资 源,并启动Executor进程
    • SparkContext根据RDD的依赖 关系构建DAG图,DAG图提交给 DAGScheduler解析成Stage,然后 把一个个TaskSet提交给底层调度器 TaskScheduler处理;Executor向 SparkContext申请Task,Task Scheduler将Task发放给Executor运 行,并提供应用程序代码
    • Task在Executor上运行,把执 行结果反馈给TaskScheduler,然后 反馈给DAGScheduler,运行完毕后 写入数据并释放所有资源
  2. 总体而言,Spark运行架构具有以下特点:
    • 每个Application都有自己专属的Executor进程,并 且该进程在Application运行期间一直驻留。Executor进 程以多线程的方式运行Task
    • Spark运行过程与资源管理器无关,只要能够获取 Executor进程并保持通信即可
    • Task采用了数据本地性和推测执行等优化机制
RDD运行原理
  1. 设计背景

    • 许多迭代式算法(比如机器学习、图算法等)和交互式数据 挖掘工具,共同之处是,不同计算阶段之间会重用中间结果
    • 目前的MapReduce框架都是把中间结果写入到HDFS中,带 来了大量的数据复制、磁盘IO和序列化开销
    • RDD就是为了满足这种需求而出现的,它提供了一个抽象 的数据架构,我们不必担心底层数据的分布式特性,只需将 具体的应用逻辑表达为一系列转换处理,不同RDD之间的 转换操作形成依赖关系,可以实现管道化,避免中间数据存 储
  2. RDD概念

    • 一个RDD就是一个分布式对象集合,本质上是一个只读的 分区记录集合,每个RDD可分成多个分区,每个分区就是 一个数据集片段,并且一个RDD的不同分区可以被保存到 集群中不同的节点上,从而可以在集群中的不同节点上进 行并行计算

    • RDD提供了一种高度受限的共享内存模型,即RDD是只读 的记录分区的集合,不能直接修改,只能基于稳定的物理 存储中的数据集创建RDD,或者通过在其他RDD上执行确 定的转换操作(如map、join和group by)而创建得到新的 RDD

    • RDD提供了一组丰富的操作以支持常见的数据运算,分为 “动作”(Action)和“转换”(Transformation)两种类 型

    • RDD提供的转换接口都非常简单,都是类似map、filter、 groupBy、join等粗粒度的数据转换操作,而不是针对某个数 据项的细粒度修改(不适合网页爬虫)

    • 表面上RDD的功能很受限、不够强大,实际上RDD已经被实 践证明可以高效地表达许多框架的编程模型(比如 MapReduce、SQL、Pregel)

    • Spark用Scala语言实现了RDD的API,程序员可以通过调用 API实现对RDD的各种操作

    • RDD典型的执行过程如下:

      • RDD读入外部数据源进行创建
      • RDD经过一系列的转换(Transformation)操作,每一次都会产生不同的 RDD,供给下一个转换操作使用
      • 最后一个RDD经过“动作”操作进行转换,并输出到外部数据源

      这一系列处理称为一个Lineage(血缘关系),即DAG拓扑排序的结果 优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次 操作变得简单

      image-20230617110405319
  3. RDD特性

    • Spark采用RDD以后能够实现高效计算的原因主要在于:
      • 高效的容错性
        • 现有容错机制:数据复制或者记录日志
        • RDD:血缘关系、重新计算丢失分区、无需回滚系 统、重算过程在不同节点之间并行、只记录粗粒度 的操作
      • 中间结果持久化到内存,数据在内存中的多个RDD操 作之间进行传递,避免了不必要的读写磁盘开销
      • 存放的数据可以是Java对象,避免了不必要的对象序 列化和反序列化
  4. RDD之间的依赖关系

    • 窄依赖表现为一个 父RDD的分区对应 于一个子RDD的分 区或多个父RDD的 分区对应于一个子 RDD的分区

    • 宽依赖则表现为存 在一个父RDD的一 个分区对应一个子 RDD的多个分区

      image-20230617110511896
  5. Stage的划分

    • Spark通过分析各个RDD的依赖关系生成了DAG,再通过分 析各个RDD中的分区之间的依赖关系来决定如何划分Stage, 具体划分方法是:

      • 在DAG中进行反向解析,遇到宽依赖就断开

      • 遇到窄依赖就把当前的RDD加入到Stage中

      • 将窄依赖尽量划分在同一个Stage中,可以实现流水线计算

    • 被分成三个Stage,在Stage2中,从map到union都是窄依 赖,这两步操作可以形成一个流水线操作。流水线操作实例:

      • 分区7通过map操 作生成的分区9, 可以不用等待分 区8到分区10这个 map操作的计算 结束,而是继续 进行union操作, 得到分区13,这 样流水线执行大 大提高了计算的 效率

        image-20230617110901155
    • Stage的类型包括两种:ShuffleMapStage和ResultStage,具体如下:

      • ShuffleMapStage:不是最终的Stage,在它之后还有其他Stage, 所以,它的输出一定需要经过Shuffle过程,并作为后续Stage的输入;这 种Stage是以Shuffle为输出边界,其输入边界可以是从外部获取数据,也 可以是另一个ShuffleMapStage的输出,其输出可以是另一个Stage的开 始;在一个Job里可能有该类型的Stage,也可能没有该类型Stage;
      • ResultStage:最终的Stage,没有输出,而是直接产生结果或存储。 这种Stage是直接输出结果,其输入边界可以是从外部获取数据,也可以 是另一个ShuffleMapStage的输出。在一个Job里必定有该类型Stage。 因此,一个Job含有一个或多个Stage,其中至少含有一个ResultStage。
  6. RDD运行过程

    通过上述对RDD概念、依赖关系和Stage划分的介绍,结合之前介绍的Spark 运行基本流程,再总结一下RDD在Spark架构中的运行过程:

    • 创建RDD对象;

    • SparkContext负责计算RDD之间的依赖关系,构建DAG;

    • DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多 个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor 去执行。

      image-20230617111028702

四、Spark SQL

从Shark说起
  1. Shark即Hive on Spark,为了实现与Hive兼 容,Shark在HiveQL方面重用了Hive中 HiveQL的解析、逻辑执行计划翻译、执行 计划优化等逻辑,可以近似认为仅将物理执 行计划从MapReduce作业替换成了Spark作 业,通过Hive的HiveQL解析,把HiveQL翻 译成Spark上的RDD操作。

  2. Shark的设计导致了两个问题:

    • 一是执行计划优化完全依赖于Hive,不 方便添加新的优化策略;

    • 二是因为Spark是线程级并行,而 MapReduce是进程级并行,因此, Spark在兼容Hive的实现上存在线程安 全问题,导致Shark不得不使用另外一 套独立维护的打了补丁的Hive源码分支

      image-20230617111302898
Spark SQL设计
  1. Spark SQL在Hive兼容层面仅依赖HiveQL解析、Hive元数据,也就是说,从 HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责

    image-20230617111440994
  2. Spark SQL增加了SchemaRDD(即带有Schema信息的RDD),使用户 可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以是 Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据。

    Spark SQL目前支持Scala、Java、Python三种语言,支持SQL-92规范

    image-20230617111605975

五、Spark的部署和应用方式

Spark三种部署方式
  1. Spark支持三种不同类型的部署方式,包括:

    • Standalone(类似于MapReduce1.0,slot为资源分配单位)

    • Spark on Mesos(和Spark有血缘关系,更好支持Mesos)

    • Spark on YARN

      image-20230617111707064
从Hadoop+Storm架构转向Spark架构
image-20230617111735623
  1. 用Spark架构具有如下优点:

    • 实现一键式安装和配置、线程级别 的任务监控和告警
    • 降低硬件集群、软件维护、任务监 控和应用开发的难度
    • 便于做成统一的硬件、计算平台资 源池
  2. 需要说明的是,Spark Streaming无法 实现毫秒级的流计算,因此,对于需 要毫秒级实时响应的企业应用而言, 仍然需要采用流计算框架(如Storm)

    image-20230617112020229
Hadoop和Spark的统一部署
  1. 由于Hadoop生态系统中的一些组件所实现的功能,目前还是无法由 Spark取代的,比如,Storm

  2. 现有的Hadoop组件开发的应用,完全转移到Spark上需要一定的成本

    不同的计算框架统一运行在YARN中,可以带来如下好处:

    • 计算资源按需伸缩
    • 不用负载应用混搭,集群利用率高
    • 共享底层存储,避免数据跨集群迁移

4-理解数据

一、数据理解的主要任务

  1. 数据理解在统计学中称为exploratory data analysis(EDA)

    • 借助人类对数据的观察和“模式”识别能
    • 对数据进行初步研究,以便更好地理解它的特性
    • 有助于选择合适的数据预处理和数据分析、挖掘技术
  2. 任务一:每个属性取值分布统计

    • 对给定数据集的各个属性的取值分布情况进行统计 概括。例:结构化的信贷数据集

      image-20230617140126057
  3. 任务二:多个属性取值分布统计

    • 对给定数据集的多个属性的取值分布情况进行统计概括

    • 例如,利用散点图查看属性之间具有的相关性,数据的分布情况

      image-20230617140157693
  4. 任务三:数据的总体质量评估

    • 数据存在误差属性值缺失噪声和不一致性等潜在的数据质量 问题

    • 例:原始的信贷数据集

      image-20230617140243028
  5. 理解数据的主要方法

    • 汇总统计方法(Summary statistics),或称为概况性统计 描述
    • 传统可视化方法(Visualization)
      • 包括OLAP(Online Analytical Processing)
    • 基于数据挖掘结果的可视化方法
      • 通过聚类、离群点检测的结果分析数据的特点
      • 高维数据的低维嵌入(low-dimensional embedding)可视化

二、基于统计描述的数据理解方法

集中趋势(central tendency)度量
  • 数值型数据
    • 均值
    • 分位数
    • 几何均值
  • 类别型数据
    • 众数
  1. 数值型数据的集中趋势度量方法

    • 均值

      image-20230617140531323
    • 中位数

    • 四分数

    • 几何平均数

      image-20230617140624243
  2. 类别型数据的集中趋势度量方法

    • 众数(mode):一组数据中出现频率最高的属性值

      image-20230617140724160
  3. 集中趋势度量方法比较

    image-20230617140752961
散布(spread)程度度量
  • 数值型数据
    • 极差
    • 四分位距
    • 方差、标准差类别型数据
  • 类别数据
    • 异众比率
  1. 数值型数据的散布程度度量方法

    • 极差

    • 四分位距

    • 方差、标准差类别型数据

      image-20230617140933775
  2. 类别型数据的散布程度度量方法

    • 异众比率

      image-20230617141020799
  3. 散布程度度量方法比较

    image-20230617141045749
偏态度量
  1. 偏态(skewness)是描述数值型数据分布的对称性的度量指 标

  2. 数据分布的对称性可以分为对称、左偏或右偏

    image-20230617141152063
  3. 在数据分布的统计描述中,偏态度量是集中趋势度量和散布度量的有益补充

    • 例:某地收入统计

      image-20230617141253612
峰度度量
  1. 数据分布的峰度是描述数值型数据分布的几何形态陡峭程度的统计
  2. 以正态分布为基准定义的image-20230617141323656
image-20230617141347175

三、数据可视化方法

数据可视化
  1. 可视化是将数据转换为可视的形式,以图形或表格的形式显 示信息,以便能够借此分析数据的特征,以及数据项或属性 之间的关系
  2. 数据可视化是理解数据的重要工具
    • 人类具有分析大量视觉信息的能力
    • 可以检测普遍模式和趋势
    • 可以检测异常值和异常模式
可视化的发展历程
  1. 一个经典之作:反映霍乱患者分布与水井分布的地图

    • 霍乱地图分析了霍乱患 者分布与水井分布之间 的关系,发现在有一口 井的供水范围内患者明 显偏多,据此找到了霍 乱爆发的根源是一个被 污染的水泵
  2. 数据可视化历史上的另一个 经典之作是1857年“提灯女 神”南丁格尔设计的“鸡冠 花图”(又称玫瑰图)

    • 它以 图形的方式直观地呈现了英 国在克里米亚战争中牺牲的 战士数量和死亡原因,有力 地说明了改善军队医院的医 疗条件对于减少战争伤亡的 重要性
  3. 20世纪50年代,随着计算机出现和计算机图形 学发展,利用计算机技术在电脑屏幕上绘制出各 种图形图表,可视化技术开启了全新发展阶段

    image-20230617141627170 image-20230617141642292

    image-20230617141755309
可视化的重要作用
  1. 观测、跟踪数据

    • 例如百度地图显示的北京市实时交通路况信息

      image-20230617142034204
  2. 交互式分析数据

    • 例如用户参与的可视化分析过程

      image-20230617141905888
  3. 辅助理解数据

    • 例如微软“人立方”展示的人物关系图

      image-20230617141955061
  4. 增强数据吸引力

    • 例如一个可视化的图表新闻实例

      image-20230617142006981
可视化图表
  1. 最常用的统计图表类型及其应用场景:

    image-20230617142123318
  2. 条柱图:用于类别型数据:图中每一个类别的计数统计以“条柱”的 形式展示,其中数据的类别的频次比较以“条柱”的高度作 为评判标准。

  3. 漏斗图

    image-20230617142157827
  4. 树图

    image-20230617142215626
  5. 热力图

    image-20230617142244515
  6. 关系图(这是关系图?确定不是随便找的网图吗QwQ)

    image-20230617142306065
  7. 词云

    image-20230617142407452
  8. 桑基图

    image-20230617142449597
  9. 日历图

    image-20230617142506678
  10. 直方图

    • 直方图用于数值型数据:数值属性值频次的统计可视化。

    • 其横坐标为数值的取值跨度,纵坐标为数值的频率或频次

      image-20230617142539693
  11. 散点图

    • 散点图主要应用于数值型数据,其作用主要是观察两个(或 三个)数值型属性的数据之间的关联性

      image-20230617142649062
    • 散点图可以直观的反映集中数据和离群数据的分布,还能直 接反映数据集内存在的分组情况,还可反映属性组合的数据 区分能力

      image-20230617142726249
    • 鸢尾花数据集及散点矩阵:

      image-20230617142800298 image-20230617142809634

  12. 箱线图

    • 数值型属性,五数归纳(Five Number Summary)

    • Minimum, Q1(25%), Median, Q3(75%), Maximum

    • 箱线图(Box Plots)

      • 另一种显示数据分布的方法

      • 箱线图的箱体:四分位距(IQR, Interquartile range), IQR =Q3-Q1

      • 上下边缘(whisker):

        • min(Q3+1.5IQR, Maximum)
        • max(Q1-1.5IQR, Minimum)
      • 这样计算上下边缘可区分异常值

        image-20230617143013795
    • 箱线图应用示例:箱线图可以用来比较属性的类区分能力(discrimination capability)

      image-20230617143055597
  13. 数据矩阵图

    • 数据矩阵图,将数值映射到不同的颜色上,从而可以将一张 数据规模不大的表进行可视化

    • 例:1949-1960年各月的航班飞行次数累积表

      image-20230617143139269
  14. 雷达图

    • 可对每一个(类)多维数据对象进行可视化

      image-20230617143207569
  15. 平行坐标图

    • 平行坐标系(Parallel Coordinates )

      • 用于绘制高维数据的属性值
      • 使用一组平行坐标轴
      • 对象每个属性的值被绘制为对应坐标轴上的点,将这些点用线连接 起来
      • 因此,每个对象表示为一条线
      • 通常,对象趋于分成少数几个组,组内的点具有类似的属性值
      • 在查看此类分组时,对属性进行排序非常重要
    • 平行坐标图示例

      image-20230617143305571
可视化工具
  1. 入门级工具

    • Excel是微软公司的办公软件Office家族的系列软件之一,可以进行 各种数据的处理、统计分析和辅助决策操作,已经广泛地应用于管理、 统计、金融等领域
  2. 信息图表工具

    信息图表是信息、数据、知识等的视觉化表达,它利用人脑对于图 形信息相对于文字信息更容易理解的特点,更高效、直观、清晰地传递信 息,在计算机科学、数学以及统计学领域有着广泛的应用。

    • Google Chart API

      • 谷歌公司的制图服务接口Google Chart API,可以用来为统计数据并自 动生成图片,该工具使用非常简单,不需要安装任何软件,可以通过浏 览器在线查看统计图表

        image-20230617143459448
    • ECharts

      • ECharts是由百度公司前端数据可视化团队研发的图表库,可以流畅地运行在 PC和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11、Chrome、Firefox、 Safari等),底层依赖轻量级的、Canvas类库ZRender,可以提供直观、生动、 可交互、可高度个性化定制的数据可视化图表

        image-20230617143513840
    • D3

      • D3是最流行的可视化库之一,是一个用于网页作图、生成互动图形的 JavaScript函数库,提供了一个D3对象,所有方法都通过这个对象调用。 D3能够提供大量线性图和条形图之外的复杂图表样式,例如Voronoi图、 树形图、圆形集群和单词云等。

        image-20230617143531782
    • Tableau

      • Tableau是桌面系统中最简单的商业智能工具软件,更适合企业和部门进 行日常数据报表和数据可视化分析工作。Tableau实现了数据运算与美观 的图表的完美结合,用户只要将大量数据拖放到数字“画布”上,转眼 间就能创建好各种图表。

        image-20230617143602597
    • 大数据魔镜

      • 大数据魔镜是一款优秀的国产数据分析软件,它丰富的数据公式和算法 可以让用户真正理解探索分析数据,用户只要通过一个直观的拖放界面 就可创造交互式的图表和数据挖掘模型。
  3. 地图工具

    地图工具在数据可视化中较为常见, 它在展现数据基于空间或地理分布上 有很强的表现力,可以直观地展现各 分析指标的分布、区域等特征。当指 标数据要表达的主题跟地域有关联时, 就可以选择以地图作为大背景,从而 帮助用户更加直观地了解整体的数据 情况,同时也可以根据地理位置快速 地定位到某一地区来查看详细数据。 右图就是以数据地图形式呈现的 2008年世界各地区GDP数据。

    image-20230617143804829
    • Google Fusion Tables
      • Google Fusion Tables让一般使用者也可以轻松制作出专业的统计地图。 该工具可以让数据表呈现为图表、图形和地图,从而帮助发现一些隐藏在 数据背后的模式和趋势。
    • Modest Maps
      • Modest Maps是一个小型、可扩展、交互式的免费库,提供了一套查看卫 星地图的API,只有10KB大小,是目前最小的可用地图库,它也是一个开 源项目,有强大的社区支持,是在网站中整合地图应用的理想选择。
    • Leaflet
      • Leaflet是一个小型化的地图框架,通过小型化和轻量化来满足移动网页的 需要。
  4. 时间线工具

    时间线是表现数据在时间维度的演变的有效方式,它通过互联网技术, 依据时间顺序,把一方面或多方面的事件串联起来,形成相对完整的记录 体系,再运用图文的形式呈现给用户。时间线可以运用于不同领域,最大 的作用就是把过去的事物系统化、完整化、精确化。

    • Timetoast
      • Timetoast是在线创作基于 时间轴事件记载服务的网站, 提供个性化时间线服务,可 用不同的时间线来记录你某 个方面的发展历程、心理路 程、进度过程等Timetoast 基于flash平台,操作简单
    • Xtimeline
      • Xtimeline 是一个免费的绘 制时间线的在线工具网站 ,操作简便,用户通过添 加事件日志的形式构建时 间表,同时也可给日志配 上相应的图表。Xtimeline 是一个社区类型的间轴网站
  5. 高级分析工具

    • R
      • R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于 统计计算和统计制图的优秀工具,使用难度较高。R的功能包括数据存储 和处理系统、数组运算工具(具有强大的向量、矩阵运算功能)、完整连 贯的统计分析工具、优秀的统计制图功能、简便而强大的编程语言,可操 纵数据的输入和输出,实现分支、循环以及用户可自定义功能等,通常用 于大数据集的统计与分析。
    • Weka
      • Weka是一款免费的、基于Java环境的、开源的机器学习以及数据挖掘软 件,不但可以进行数据分析,还可以生成一些简单图表。
    • Gephi
      • Gephi是一款比较特殊也很复杂的软件,主要用于社交图谱数据可视化分 析,可以生成非常酷炫的可视化图形。
    • Python
      • Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多•范罗 苏姆(Guido van Rossum)于1989年发明。Python可视化库可以大致分为: 基于matplotlib的可视化库、基于JavaScript的可视化库、基于上述两者或 其他组合功能的库。
可视化典型案例
  1. 全球黑客活动

    安全供应商Norse打造了一张能够反映全球范围内黑客攻击频率的地图 (http://map.ipviking.com),它利用Norse 的“蜜罐”攻击陷阱显示出所有 实时渗透攻击活动。如图所示,地图中的每一条线代表的都是一次攻击活动, 借此可以了解每一天、每一分钟甚至每一秒世界上发生了多少次恶意渗透。

    image-20230617144200535
  2. 互联网地图

    为了探究互联网这个庞大的宇宙,俄罗斯工程师 Ruslan Enikeev 根据 2011 年底的 数据,将全球 196 个国家的 35 万个网站数据整合起来,并根据 200 多万个网站链接 将这些“星球”通过关系链联系起来,每一个“星球”的大小根据其网站流量来决定, 而“星球”之间的距离远近则根据链接出现的频率、强度和用户跳转时创建的链接来 确定,由此绘制得到了“互联网地图”(http://internet-map.net)。

    image-20230617144218250
  3. 编程语言之间的影响力关系图

    Ramio Gómez利用来自Freebase上的编程语言维护表里的数据,绘制了编程语言之 间的影响力关系图,图中的每个节点代表一种编程语言,之间的连线代表该编程语言 对其他语言有影响,有影响力的语言会连线多个语言,相应的节点也会越大。

    image-20230617144233934
  4. 世界国家健康与财富之间的关系

    “世界国家健康与财富之间的关系”利用可视化技术,把世界上200个国家,从1810年 到2010年历时200年其各国国民的健康、财富变化数据(收集了1千多万个数据)制作成 三维动画进行了直观展示(http://www.moojnn.com/Index/whn)。

    image-20230617144329639

5-大数据技术综合运用

一、案例任务

  1. 电影推荐系统可根据用户 的喜好,向用户推荐可能 感兴趣的电影

    image-20230617144733719

二、系统设计

  1. 设计开发工作:网站、电影推荐程序、数据库

  2. 网站、电影推荐程序和数据库三个部分之间的关系:

    image-20230617144952727
  3. 数据库:

    image-20230617145012936
  4. 电影推荐系统的网页跳转示意图

    image-20230617145034050
  5. 算法设计

    • 电影推荐程序的设计是电影推荐系统设计的核心

    • 采用基于ALS矩阵分解的协同过滤算法

      image-20230617145139199
    • 把评分高的电影推荐给该用户

三、技术选择和系统实现

  1. 技术选择:

    image-20230617145215170
  2. 系统实现技术

    image-20230617145236970
  3. 系统实现:

    image-20230617145303666 image-20230617145326358
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值