实战-基于阿里云搭建数据仓库(离线与实时)

离线数仓:

数据流程

实战-基于阿里云搭建数据仓库(离线与实时)_第1张图片

  • 主要分为两部分:用户行为数仓和业务数仓
  • 用户行为数仓的来源是埋点的用户行为日志文件,通过Flume(Source–channel- datahubSink)采集导入至DataHub中;埋点数据本质上是K-V形式JsonObject所组成的JsonArray;
  • DataHub:数据总线(topic形式,可类比kafka);
  • MaxCompute/DataWorks:数据处理平台,dataWorks 是IDE
    实战-基于阿里云搭建数据仓库(离线与实时)_第2张图片
    实战-基于阿里云搭建数据仓库(离线与实时)_第3张图片

Hive的UDTF函数

  • 用户定义函数(user-defined function)UDF;
  • 用户定义聚集函数(user-defined aggregate function,UDAF);
  • 用户定义表生成函数(user-defined table-generating function,UDTF)。

UDF:返回对应值,一对一
UDAF:返回聚类值,多对一
UDTF:返回拆分值,一对多

UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。
UDAF 接受多个输入数据行,并产生一个输出数据行。像COUNT和MAX这样的函数就是聚集函数。
UDTF 操作作用于单个数据行,并且产生多个数据行-------一个表作为输出。lateral view explore()

继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, close三个方法。

  1. UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)。
  2. 初始化完成后,会调用process方法,真正的处理过程在process函数中,在process中,每一次forward()调用产生一行;如果产生多列可以将多个列的值放在一个数组中,然后将该数组传入到forward()函数。
  3. 最后close()方法调用,对需要清理的方法进行清理。

Flume 采集

file-flume-log.conf配置文件,定义了Source、channel、sink;

实战-基于阿里云搭建数据仓库(离线与实时)_第4张图片
实战-基于阿里云搭建数据仓库(离线与实时)_第5张图片
实战-基于阿里云搭建数据仓库(离线与实时)_第6张图片

数仓分层

ods=>DWD=>DWS=>ADS(或指标集市)

数据可视化

  • DataV 大屏显示
  • quickBI 离线仪表盘(报表)可视化:设置步骤,
  1. 数据源
  2. 数据集,确定维度(简单理解是横轴)和度量(要比对的纵轴)
  3. 仪表盘
  4. 数据门户(多个仪表盘组成的指标门户)
    实战-基于阿里云搭建数据仓库(离线与实时)_第7张图片
    实战-基于阿里云搭建数据仓库(离线与实时)_第8张图片

实时数仓

数据流程架构

实战-基于阿里云搭建数据仓库(离线与实时)_第9张图片
实战-基于阿里云搭建数据仓库(离线与实时)_第10张图片

  • DTS:阿里提供的数据传输、同步、迁移工具
    实战-基于阿里云搭建数据仓库(离线与实时)_第11张图片
  • DataWorks中实时计算模块SteamStudio;除组件图形化(DAG)拖拽外,还可以用FlinkSQL(Blink)进行处理;
  • 实战-基于阿里云搭建数据仓库(离线与实时)_第12张图片
  • DataV 展示,数据源配置,通过SQL生成对应的json数据。
    实战-基于阿里云搭建数据仓库(离线与实时)_第13张图片

你可能感兴趣的:(数据工程师,hadoop,cloudera)