电商数仓笔记1(数据仓库概念,项目需求及架构设计,数据生成模块)(代码片段)

明灭18 明灭18     2022-11-30     546

关键词:

电商数仓

一、数据仓库概念

  • 数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。

  • 数据仓库的输入数据通常包括:业务数据、用户行为数据和爬虫数据等

  • 业务数据:就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。

  • 用户行为数据:用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。
    -

  • 爬虫数据:通常是通过技术手段获取其他公司网站的数据。不建议这样去做。

二、项目需求及架构设计

1、项目需求分析

2、项目框架

(1)技术选型

(2)系统数据流程设计

(3)框架版本选型

1、框架发行版本选型

2、具体版本型号

(4)服务器选型

(5)集群规模

(6)集群资源规划设计

  • 在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务,测试集群用于上线前代码编写和测试。

1)生产集群
(1)消耗内存的分开
(2)数据传输数据比较紧密的放在一起(Kafka 、Zookeeper)
(3)客户端尽量放在一到两台服务器上,方便外部访问
(4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)

2)测试集群服务器规划

3、数据生成模块

(1)目标数据

  • 我们要收集和分析的数据主要包括页面数据、事件数据、曝光数据、启动数据和错误数据。

(1.1)页面

  • 页面数据主要记录一个页面的用户访问情况,包括访问时间、停留时间、页面路径等信息。



(1.2)事件

  • 事件数据主要记录应用内一个具体操作行为,包括操作类型、操作对象、操作对象描述等信息。



(1.3)曝光

  • 曝光数据主要记录页面所曝光的内容,包括曝光对象,曝光类型等信息


(1.4)启动

  • 启动数据记录应用的启动信息

(1.5)错误

  • 错误数据记录应用使用
  • 过程中的错误信息,包括错误编号及错误信息

(2)数据埋点

(2.1)主流埋点方式

  • 目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点三种。
  • 代码埋点是通过调用埋点SDK函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据。例如,我们对页面中的某个按钮埋点后,当这个按钮被点击时,可以在这个按钮对应的OnClick 函数里面调用SDK提供的数据发送接口,来发送数据。
  • 可视化埋点只需要研发人员集成采集SDK,不需要写埋点代码,业务人员就可以通过访问分析平台的“圈选”功能,来“圈”出需要对用户行为进行捕捉的控件,并对该事件进行命名。圈选完毕后,这些配置会同步到各个用户的终端上,由采集SDK 按照圈选的配置自动进行用户行为数据的采集和发送。
  • 全埋点是通过在产品中嵌入SDK,前端自动采集页面上的全部用户行为事件,上报埋点数据,相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析。

图例解析三种方式:

(2.2)埋点数据上报时机

  • 埋点数据上报时机包括两种方式。

方式一,在离开该页面时,上传在这个页面产生的所有数据(页面、事件、曝光、错误等)。优点,批处理,减少了服务器接收数据压力。缺点,不是特别及时。

方式二,每个事件、动作、错误等,产生后,立即发送。优点,响应及时。缺点,对服务器接收数据压力比较大。

  • 本次项目采用方式一埋点。

(2.3)埋点数据日志结构

  • 我们的日志结构大致可分为两类,一是普通页面埋点日志,二是启动日志。
  • 普通页面日志结构如下,每条日志包含了,当前页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的common字段。

(1)普通页面埋点日志格式


  "common":                   -- 公共信息
    "ar": "230000",              -- 地区编码
    "ba": "iPhone",              -- 手机品牌
    "ch": "Appstore",            -- 渠道
    "is_new": "1",--是否首日使用,首次使用的当日,该字段值为1,过了24:00,该字段置为0。
	"md": "iPhone 8",            -- 手机型号
    "mid": "YXfhjAYH6As2z9Iq", -- 设备id
    "os": "iOS 13.2.9",          -- 操作系统
    "uid": "485",                 -- 会员id
    "vc": "v2.1.134"             -- app版本号
  ,
"actions": [                     --动作(事件)  
    
      "action_id": "favor_add",   --动作id
      "item": "3",                   --目标id
      "item_type": "sku_id",       --目标类型
      "ts": 1585744376605           --动作时间戳
    
  ],
  "displays": [
    
      "displayType": "query",        -- 曝光类型
      "item": "3",                     -- 曝光对象id
      "item_type": "sku_id",         -- 曝光对象类型
      "order": 1,                      --出现顺序
      "pos_id": 2                      --曝光位置
    ,
    
      "displayType": "promotion",
      "item": "6",
      "item_type": "sku_id",
      "order": 2, 
      "pos_id": 1
    ,
    
      "displayType": "promotion",
      "item": "9",
      "item_type": "sku_id",
      "order": 3, 
      "pos_id": 3
    ,
    
      "displayType": "recommend",
      "item": "6",
      "item_type": "sku_id",
      "order": 4, 
      "pos_id": 2
    ,
    
      "displayType": "query ",
      "item": "6",
      "item_type": "sku_id",
      "order": 5, 
      "pos_id": 1
    
  ],
  "page":                        --页面信息
    "during_time": 7648,        -- 持续时间毫秒
    "item": "3",                  -- 目标id
    "item_type": "sku_id",      -- 目标类型
    "last_page_id": "login",    -- 上页类型
    "page_id": "good_detail",   -- 页面ID
    "sourceType": "promotion"   -- 来源类型
  ,
"err":                     --错误
"error_code": "1234",      --错误码
    "msg": "***********"       --错误信息
,
  "ts": 1585744374423  --跳入时间戳

(2)启动日志格式

  • 启动日志结构相对简单,主要包含公共信息,启动信息和错误信息。

  "common": 
    "ar": "370000",
    "ba": "Honor",
    "ch": "wandoujia",
    "is_new": "1",
    "md": "Honor 20s",
    "mid": "eQF5boERMJFOujcp",
    "os": "Android 11.0",
    "uid": "76",
    "vc": "v2.1.134"
  ,
  "start":    
    "entry": "icon",         --icon手机图标  notice 通知   install 安装后启动
    "loading_time": 18803,  --启动加载时间
    "open_ad_id": 7,        --广告页ID
    "open_ad_ms": 3449,    -- 广告总共播放时间
    "open_ad_skip_ms": 1989   --  用户跳过广告时点
  ,
"err":                     --错误
"error_code": "1234",      --错误码
    "msg": "***********"       --错误信息
,
  "ts": 1585744304000

(3)服务器和JDK准备

(3.0)服务器准备

分别安装hadoop102、hadoop103、hadoop104三台主机。
详情见Hadoop笔记

(3.1)编写集群分发脚本xsync

1)xsync集群分发脚本
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析
①rsync命令原始拷贝:
rsync -av /opt/module root@hadoop103:/opt/
②期望脚本:
xsync要同步的文件名称
③说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行。
(3)脚本实现
①在用的家目录/home/atguigu下创建bin文件夹
[atguigu@hadoop102 ~]$ mkdir bin
②在/home/atguigu/bin目录下创建xsync文件,以便全局调用
[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 ~]$ vim xsync
在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

③修改脚本xsync具有执行权限
[atguigu@hadoop102 bin]$ chmod +x xsync
④测试脚本
[atguigu@hadoop102 bin]$ xsync xsync

(3.2)SSH无密登录配置

  • 说明:这里面只配置了hadoop102、hadoop103到其他主机的无密登录;因为hadoop102未外配置的是NameNode,hadoop103配置的是ResourceManager,都要求对其他节点无密访问。
    (1)hadoop102上生成公钥和私钥:
    [atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa
    然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
    (2)将hadoop102公钥拷贝到要免密登录的目标机器上
    [atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
    [atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
    [atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104
    (3)hadoop103上生成公钥和私钥:
    [atguigu@hadoop103 .ssh]$ ssh-keygen -t rsa
    然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
    (4)将hadoop103公钥拷贝到要免密登录的目标机器上
    [atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop102
    [atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop103
    [atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop104

(3.3)JDK准备

1)卸载现有JDK(3台节点)
[atguigu@hadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

[atguigu@hadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

[atguigu@hadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
(1)rpm -qa:表示查询所有已经安装的软件包
(2)grep -i:表示过滤时不区分大小写
(3)xargs -n1:表示一次获取上次执行结果的一个值
(4)rpm -e --nodeps:表示卸载软件

2)用XShell工具将JDK导入到hadoop102的/opt/software文件夹下面

3)在Linux系统下的opt目录中查看软件包是否导入成功
[atguigu@hadoop102 software]# ls /opt/software/
看到如下结果:
jdk-8u212-linux-x64.tar.gz
4)解压JDK到/opt/module目录下
[atguigu@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
5)配置JDK环境变量

(1)新建/etc/profile.d/my_env.sh文件
[atguigu@hadoop102 module]# sudo vim /etc/profile.d/my_env.sh
添加如下内容,然后保存(:wq)退出
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
(2)让环境变量生效
[atguigu@hadoop102 software]$ source /etc/profile.d/my_env.sh

6)测试JDK是否安装成功
[atguigu@hadoop102 module]# java -version
如果能看到以下结果、则Java正常安装
java version “1.8.0_212”
7)分发JDK
[atguigu@hadoop102 module]$ xsync /opt/module/jdk1.8.0_212/
8)分发环境变量配置文件
[atguigu@hadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh
9)分别在hadoop103、hadoop104上执行source
[atguigu@hadoop103 module]$ source /etc/profile.d/my_env.sh
[atguigu@hadoop104 module]$ source /etc/profile.d/my_env.sh

(3.4)环境变量配置说明

  • Linux的环境变量可在多个文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc,~/.bash_profile等,下面说明上述几个文件之间的关系和区别。
  • bash的运行模式可分为login shell和non-login shell。
  • 例如,我们通过终端,输入用户名、密码,登录系统之后,得到就是一个login shell。而当我们执行以下命令ssh hadoop103 command,在hadoop103执行command的就是一个non-login shell。
  • 这两种shell的主要区别在于,它们启动时会加载不同的配置文件,login shell启动时会加载/etc/profile,~/.bash_profile,~/.bashrc。non-login shell启动时会加载~/.bashrc。 而在加载~/.bashrc(实际是~/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段
  • 因此不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。

(4)模拟数据

(4.1)使用说明

1)将application.yml、gmall2020-mock-log-2021-01-22.jar、path.json、logback.xml上传到hadoop102的/opt/module/applog目录下
(1)创建applog路径
[atguigu@hadoop102 module]$ mkdir /opt/module/applog
(2)上传文件application.yml到/opt/module/applog目录

2)配置文件
(1)application.yml文件
可以根据需求生成对应日期的用户行为日志。
[atguigu@hadoop102 applog]$ vim application.yml
修改如下内容

# 外部配置打开
# 外部配置打开
logging.config: "./logback.xml"
#业务日期  注意:并不是Linux系统生成日志的日期,而是生成数据中的时间
mock.date: "2020-06-14"

#模拟数据发送模式
#mock.type: "http"
#mock.type: "kafka"
mock.type: "log"

#http模式下,发送的地址
mock.url: "http://hdp1/applog"

#kafka模式下,发送的地址
mock:
  kafka-server: "hdp1:9092,hdp2:9092,hdp3:9092"
  kafka-topic: "ODS_BASE_LOG"

#启动次数
mock.startup.count: 200
#设备最大值
mock.max.mid: 500000
#会员最大值
mock.max.uid: 100
#商品最大值
mock.max.sku-id: 35
#页面平均访问时间
mock.page.during-time-ms: 20000
#错误概率 百分比
mock.error.rate: 3
#每条日志发送延迟 ms
mock.log.sleep: 10
#商品详情来源  用户查询,商品推广,智能推荐, 促销活动
mock.detail.source-type-rate: "40:25:15:20"
#领取购物券概率
mock.if_get_coupon_rate: 75
#购物券最大id
mock.max.coupon-id: 3
#搜索关键词  
mock.search.keyword: "图书,小米,iphone11,电视,口红,ps5,苹果手机,小米盒子"

(2)path.json,该文件用来配置访问路径

  • 根据需求,可以灵活配置用户点击路径。
[
	"path":["home","good_list","good_detail","cart","trade","payment"],"rate":20 ,
	"path":["home","search","good_list","good_detail","login","good_detail","cart","trade","payment"],"rate":40 ,
	"path":["home","mine","orders_unpaid","trade","payment"],"rate":10 ,
	"path":["home","mine","orders_unpaid","good_detail","good_spec","comment","trade","payment"],"rate":5 ,
	"path":["home","mine","orders_unpaid","good_detail","good_spec","comment","home"],"rate":5 ,
	"path":["home","good_detail"],"rate":10 ,
	"path":["home"  ],"rate":10 
]

(3)logback配置文件

  • 可配置日志生成路径,修改内容如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_HOME" value="/opt/module/applog/log" />
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>$LOG_HOME/app.%dyyyy-MM-dd.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <!-- 将某一个包下日志单独打印日志 -->
    <logger name="com.atgugu.gmall2020.mock.log.util.LogUtil"
            level="INFO" additivity="false">
        <appender-ref ref="rollingFile" />
        <appender-ref ref="console" />
    </logger>

    <root level="error"  >
        <appender-ref ref="console" />
    </root>
</configuration>

3)生成日志
(1)进入到/opt/module/applog路径,执行以下命令
[atguigu@hadoop102 applog]$ java -jar gmall2020-mock-log-2021-01-22.jar
(2)在/opt/module/applog/log目录下查看生成日志
[atguigu@hadoop102 log]$ ll

(4.2)集群日志生成脚本

在hadoop102的/home/atguigu目录下创建bin目录,这样脚本可以在服务器的任何目录执行。

[atguigu@hadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin

(1)在/home/atguigu/bin目录下创建脚本lg.sh
[atguigu@hadoop102 bin]$ vim lg.sh
(2)在脚本中编写如下内容

#!/bin/bash
for i in hadoop102 hadoop103; do
    echo "========== $i =========="
    ssh $i "cd /opt/module/applog/; java -jar gmall2020-mock-log-2021-01-22.jar >/dev/null 2>&1 &"
done 

注:
①/opt/module/applog/为jar包及配置文件所在路径
②/dev/null代表Linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。
标准输入0:从键盘获得输入 /proc/self/fd/0
标准输出1:输出到屏幕(即控制台) /proc/self/fd/1
错误输出2:输出到屏幕(即控制台) /proc/self/fd/2
(3)修改脚本执行权限
[atguigu@hadoop102 bin]$ chmod u+x lg.sh
(4)将jar包及配置文件上传至hadoop103的/opt/module/applog/路径
(5)启动脚本
[atguigu@hadoop102 module]$ lg.sh
(6)分别在hadoop102、hadoop103的/opt/module/applog/log目录上查看生成的数据
[atguigu@hadoop102 logs]$ ls
app.2020-06-14.log
[atguigu@hadoop103 logs]$ ls
app.2020-06-14.log

数据仓库之电商数仓--1用户行为数据采集(代码片段)

目录一、数据仓库概念二、项目需求及架构设计2.1项目需求分析2.2项目框架2.2.1技术选型2.2.2系统数据流程设计2.2.3框架版本选型2.2.4服务器选型2.2.5集群规模2.2.6集群资源规划设计三、数据生成模块3.1目标数据3.1.1页面日志3.1.2事... 查看详情

大数据项目之电商数仓-用户行为数据采集(代码片段)

数据仓库简介数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合,通过数据仓库中的数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。项目需求实时采集买点的用户行为数... 查看详情

大数据项目之电商数仓-用户行为数据采集(代码片段)

数据仓库简介数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合,通过数据仓库中的数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。项目需求实时采集买点的用户行为数... 查看详情

湖仓一体电商项目:项目背景和架构介绍

...架构介绍一、​​​​​​​项目背景介绍湖仓一体实时电商项目是基于某宝商城电商项目的电商数据分析平台,本项目在技术方面涉及大数据技术组件搭建,湖仓一体分层数仓设计、实时到离线数据指标分 查看详情

hive数仓项目架构说明环境搭建及数据仓库基础知识(代码片段)

...库的基本介绍(回顾)--理解5)维度分析的基本内容--理解6)数仓建模的基本内容--理解7)教育数仓分层架构--理解1.教育项目的架构说明项目的架构:基于clouderamanager大数据统一管理平台,在此平台之上构建大数据相关的软件(zookeeper,HDFS,... 查看详情

hive数仓项目架构说明环境搭建及数据仓库基础知识(代码片段)

...库的基本介绍(回顾)--理解5)维度分析的基本内容--理解6)数仓建模的基本内容--理解7)教育数仓分层架构--理解1.教育项目的架构说明项目的架构:基于clouderamanager大数据统一管理平台,在此平台之上构建大数据相关的软件(zookeeper,HDFS,... 查看详情

hive数仓项目之需求分析建模分析优化方案(代码片段)

 往期内容:Hive数仓项目架构说明、环境搭建及数据仓库基础知识Hive数仓项目之数仓分层、数仓工具的使用Hive数仓项目之访问咨询主题看板:数据的采集、转换、分析导出Hive数仓项目之访问咨询主题看板增量的流程​... 查看详情

电商数据仓库项目简介

参考技术A基于hadoop生态搭建的电商数据仓库,整体功能架构包含数据采集、数仓搭建、数据导出、数据可视化等。github地址电商数据仓库详情学习攻略请查看hadoop安装hive安装hive常用命令完善中...项目踩坑请查看Linux卸载安装Mysq... 查看详情

如何设计好数仓?数仓到底是什么?---详解

数据仓库1、什么是数仓?--数据仓库概念2、OLTP和OLAP区别3、数据仓库的特点3.1面向主题3.2数据集成3.3非易失3.4时变4、数据仓库系统架构4.1系统结构图4.2、源数据4.3、ETL4.4、数据仓库与数据集市4.5、应用系统4.6、用户5、维度... 查看详情

如何设计好数仓?数仓到底是什么?---详解

数据仓库1、什么是数仓?--数据仓库概念2、OLTP和OLAP区别3、数据仓库的特点3.1面向主题3.2数据集成3.3非易失3.4时变4、数据仓库系统架构4.1系统结构图4.2、源数据4.3、ETL4.4、数据仓库与数据集市4.5、应用系统4.6、用户5、维度... 查看详情

数仓实践:总线矩阵架构设计

如何设计一套切实可行的数据仓库呢?我们要明白,对于数据仓库的设计是不能完全依赖于业务的需求,但往往又必须要服务于业务的价值。因此,在构建数据仓库前,我们往往会通过总线矩阵设计,来快... 查看详情

数仓的概念及架构

目录一、数仓的概念(数据仓库)1、对比记忆:①数据库的概念:②数仓的概念(全方面的数据完整保存):③银行主题④集成:⑤时间变化:⑥效率足够高:⑦数据质量⑧扩展性:2、... 查看详情

有道教育数仓建设实践

...研业务系统的数据。避免出现基于少量的业务调研设计的数仓架构和规范不满足后面业务的扩展,影响数仓的稳定性。2.2架构设计平台架构:平台组件技术选 查看详情

大数据项目之电商数仓日志采集flumesourcechannelsinkkafka的三个架构

文章目录4.用户行为数据采集模块4.3日志采集Flume4.3.1Kafka的三个架构4.3.1.1source4.3.1.2channel4.3.1.3sink4.3.1.4kafkasource4.3.1.5kafkasink4.3.1.6kafkachannel4.3.1.6.1第一个结构4.3.1.6.2第二个结构4.3.1.6.3第三个结构4.用户行为数据采集模块4.3日志采集F... 查看详情

hive数仓项目之基本优化方案学生出勤主题看板分析(代码片段)

往期内容:Hive数仓项目架构说明、环境搭建及数据仓库基础知识Hive数仓项目之数仓分层、数仓工具的使用Hive数仓项目之访问咨询主题看板:数据的采集、转换、分析导出 Hive数仓项目之访问咨询主题看板增量的流程Hive... 查看详情

dataworks数仓建设基础

1数仓基本概念1.1数据仓库架构源数据, 数据仓库, 数据应用,具体架构如下:源数据:该部分数据主要是从生产数据库,线下手工数据和日志数据,集成到dataworks中,形成了数仓的第一层ods层的数据明细数据仓库:主要是按... 查看详情

数仓建设保姆级教程,离线和实时理论+实战)(代码片段)

文档大纲:一、数仓基本概念1.数据仓库架构我们在谈数仓之前,为了让大家有直观的认识,先来谈数仓架构,“架构”是什么?这个问题从来就没有一个准确的答案。这里我们引用一段话:在软件行业... 查看详情

hive数仓项目之访问咨询主题看板增量的流程(代码片段)

 往期内容:Hive数仓项目架构说明、环境搭建及数据仓库基础知识Hive数仓项目之数仓分层、数仓工具的使用Hive数仓项目之访问咨询主题看板:数据的采集、转换、分析导出今日内容:访问咨询主题看板_增量的流程(操作)1.... 查看详情