目录
[第7章 数据仓库环境准备](#第7章 数据仓库环境准备)
[7.1 数据仓库运行环境](#7.1 数据仓库运行环境)
[7.1.1 Hive环境搭建](#7.1.1 Hive环境搭建)
[7.1.2 Yarn环境配置](#7.1.2 Yarn环境配置)
[7.2 数据仓库开发环境](#7.2 数据仓库开发环境)
[第8章 广告数仓ODS层](#第8章 广告数仓ODS层)
[8.1 广告信息表](#8.1 广告信息表)
[8.2 推广平台表](#8.2 推广平台表)
[8.3 产品表](#8.3 产品表)
[8.4 广告投放表](#8.4 广告投放表)
[8.5 日志服务器列表](#8.5 日志服务器列表)
[8.6 广告监测日志表](#8.6 广告监测日志表)
[8.7 数据装载脚本](#8.7 数据装载脚本)
第7章 数据仓库环境准备
7.1 数据仓库运行环境
7.1.1 Hive 环境搭建
1 ) Hive 安装
2 ) Hive on Spark 配置
本项目使用Spark最为Hive的计算引擎。
( 1 )兼容性说明
注意:官网下载的Hive3.1.3和Spark3.3.0默认是不兼容的。因为Hive3.1.3支持的Spark版本是2.3.0,所以需要我们重新编译Hive3.1.3版本。
编译步骤:官网下载Hive3.1.3源码,修改pom文件中引用的Spark版本为3.3.0,如果编译通过,直接打包获取jar包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。
( 2 )在 Hive 所在节点部署 spark-3.3.1-bin-hadoop3.tgz
①Spark官网下载安装包地址:
②上传并解压解压spark-3.3.1-bin-hadoop3.tgz
atguigu@hadoop102 software\]$ tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module/
\[atguigu@hadoop102 software\]$ mv /opt/module/ spark-3.3.1-bin-hadoop3.tgz /opt/module/spark
③修改spark-env.sh配置文件
修改文件名。
\[atguigu@hadoop102 software\]$ mv /opt/module/spark/conf/spark-env.sh.template /opt/module/spark/conf/spark-env.sh
编辑文件
\[atguigu@hadoop102 software\]$ vim /opt/module/spark/conf/spark-env.sh
增加如下内容。
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop/
**(** **3** **)配置** **SPARK_HOME** **环境变量**
\[atguigu@hadoop102 software\]$ sudo vim /etc/profile.d/my_env.sh
添加如下内容。
```bash
# SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
```
source 使其生效。
\[atguigu@hadoop102 software\]$ source /etc/profile.d/my_env.sh
**(** **4** **)在** **hive** **中创建** **spark** **配置文件**
\[atguigu@hadoop102 software\]$ vim /opt/module/hive/conf/spark-defaults.conf
添加如下内容(在执行任务时,会根据如下参数执行)。
```XML
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/spark-history
spark.executor.memory 1g
spark.driver.memory 1g
spark.yarn.populateHadoopClasspath true
```
在HDFS创建如下路径,用于存储历史日志。
\[atguigu@hadoop102 software\]$ hadoop fs -mkdir /spark-history
**(** **5** **)向** **HDFS** **上传** **Spark** **纯净版** **jar** **包**
说明1:采用Spark纯净版jar包,不包含hadoop和hive相关依赖,能避免依赖冲突。
说明2:Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将Spark的依赖上传到HDFS集群路径,这样集群中任何一个节点都能获取到。
**Ⅰ、在HDFS创建路径**
\[atguigu@hadoop102 software\]$ hadoop fs -mkdir /spark-jars
**Ⅱ、解压Spark纯净版**
\[atguigu@hadoop102 software\]$ tar -zxvf spark-3.3.1-bin-without-hadoop.tgz
**Ⅲ、上传纯净版jar包**
\[atguigu@hadoop102 spark\]$ hadoop fs -put spark-3.3.1-bin-without-hadoop/jars/\* /spark-jars
**(** **6** **)修改** **hive-site.xml** **文件**
\[atguigu@hadoop102 \~\]$ vim /opt/module/hive/conf/hive-site.xml
添加如下内容。
```XML