![](https://img-blog.csdnimg.cn/5f37575e3f944842851a6210e1e71068.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
hive
文章平均质量分 74
数据仓库,ETL
优惠券已抵扣
余额抵扣
还需支付
¥59.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
做一个有趣的人Zz
天下唯庸人无咎无誉
展开
-
FAQ02【Hive】:Hive连接后出现一堆乱七八糟的日志
现象如下:原因:(1)环境变量中配置了Hbase的目录导致hbase安装包下日志jar包重复导致。cd /data/soft/hbase-2.2.7/lib/client-facing-thirdparty把这三个jar包重命名一下。或者把环境变量注释掉。(2)环境变量配置了HADOOP_CLASSPATH导致的vi /etc/profileexport HADOOP_CLASSPATH=`${HADOOP_HOME}/bin/hadoop classpath`把这个注释掉或原创 2022-03-15 00:14:20 · 3212 阅读 · 2 评论 -
数据仓库之【商品订单数据数仓】12:项目优化
一、Sqoop数据采集参数优化默认情况下Sqoop采集数据只会生成一个map任务,采集性能会比较低,我们可以通过splitBy指定一个数字类型的列,再去修改num-mappers的值,这样就可以提高采集性能了,一般可以将num-mappers设置为5~10个。二、集群Queue队列优化针对大数据集群的资源可以分为多个队列,可以分为一个online队列,online表示线上的意思,这里面会执行线上的任务,还有一个offline队列,这个里面执行离线任务针对我们的数仓任务可以在离线队列中执行,不影响线上原创 2022-03-13 09:28:52 · 206 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】11:任务调度:Crontab任务调度器、Azkaban调度器、数仓使用Azkaban
一、任务调度针对数据仓库中的任务脚本我们前面已经整理过了,任务脚本还是比较多的,针对初始化表的脚本只需要执行一次即可,其它的脚本需要每天都执行一次,这个时候就需要涉及到任务定时调度了。二、Crontab调度器的使用咱们前面在学习Linux的时候学过一个crontab调度器,通过它可以实现定时执行指定的脚本。针对我们这个数据仓库中的这些脚本使用crontab进行调度是可以的。但是需要注意一点:这些任务之间是有一些依赖关系的,从大的层面上来说,dwd层的任务需要等ods层的任务执行成功之后才能开始执行原创 2022-03-13 09:28:36 · 3205 阅读 · 1 评论 -
数据仓库之【商品订单数据数仓】10:数据可视化工具:Zeppelin安装部署、Zeppelin使用
一、数据可视化数据可视化这块不是项目的重点,不过为了让大家能有一个更加直观的感受,我们可以选择一些现成的数据可视化工具实现。咱们前面分析过,想要查询hive中的数据可以使用hue,不过hue无法自动生成图表。所以我们可以考虑使用Zeppelin针对一些复杂的图表,可以选择定制开发,使用echarts、finebi组件实现。二、Zeppelin安装部署注意:不要使用Zeppelin0.8.2版本,这个版本有bug,无法使用图形展现数据。在这我们使用zeppelin-0.9.0-preview1这原创 2022-03-13 09:28:11 · 891 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】09:商品订单数据数仓总结:数据库和表梳理、任务脚本梳理
一、数据库和表梳理二、任务脚本梳理三、数据这个待补充。原创 2022-03-13 09:27:55 · 486 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】08:拉链表:什么是拉链表、创建拉链表
一、什么是拉链表针对订单表、订单商品表,流水表,这些表中的数据是比较多的,如果使用全量的方式,会造成大量的数据冗余,浪费磁盘空间。所以这种表,一般使用增量的方式,每日采集新增的数据。在这注意一点:针对订单表,如果单纯的按照订单产生时间增量采集数据,是有问题的,因为用户可能今天下单,明天才支付,但是Hive是不支持数据更新的,这样虽然MySQL中订单的状态改变了,但是Hive中订单的状态还是之前的状态。想要解决这个问题,一般有这么几种方案:第一种:每天全量导入订单表的数据,这种方案在项目启动初期是没原创 2022-03-12 06:53:19 · 4457 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】07:需求4:漏斗分析
一、漏斗分析先看漏斗的效果其实就是根据用户的行为一层一层分析用户的转化率。活跃–>商品详情页–>下单–>支付每一个指标对应的表:活跃:dws_user_active_history商品详情页:dwd_good_item下单:dwd_user_order支付:dwd_user_order二、思路首先统计当天活跃用户数量。接着统计当天进入了多少个商品详情页。接着统计当天下单的数量。最后统计当天支付的数量。并且计算每一层的转化率。最终把结果数据保存到表app_us原创 2022-03-12 06:53:06 · 651 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】06:需求3:商品相关指标
一、商品相关指标分析针对这个需求我们主要统计两个指标1、商品销售情况(商品名称、一级类目、订单总量、销售额)2、商品品类偏好Top10(商品一级类目,订单总量)二、思路1、商品销售情况这个指标主要统计商品名称,一级类目、订单总量、销售额这些字段信息。订单中的详细信息是在dwd_order_item表中,需要关联dwd_goods_info和dwd_category_code获取商品名称和商品一级类目信息。在这最后是基于这些表构建一个商品订单信息的宽表 dws_order_goods_all_原创 2022-03-12 06:52:52 · 622 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】05:需求2:电商GMV
一、电商GMV分析GMV:Gross Merchandise Volume,是指一定时间内的成交总金额。GMV 多用于电商行业,这个实际指的是拍下的订单总金额,包含付款和未付款的部分。我们在统计的时候就可以将订单中的每天的所有订单金额全部都累加起来,就可以获取到当天的GMV了。二、思路对dwd_user_order表中的数据进行统计即可,通过order_money字段可以计算出来GMV,将结果保存到表app_gmv中。三、app层注意:gmv字段的类型可以使用double或者decimal(1原创 2022-03-12 06:52:37 · 1119 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】04:需求1:用户信息宽表
一、用户信息宽表分析宽表主要是便于使用,在使用的时候不至于每次都要关联很多张表。用户信息宽表包括服务端中的user表、user_extend表。如果有需求的话其实还可以把用户的一些其他维度的数据关联过来,例如:当日的下单数量、消费金额等等指标。二、思路对dwd_user表和dwd_user_extend表执行left join操作,通过user_id进行关联即可,将结果数据保存到dws_user_info_all表中。三、dws层1、(1)源表(2)建表语句(3)映射关系四、开发脚本原创 2022-03-12 06:52:22 · 896 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】03:需求分析:数据准备--生成1个月数据、重新加载数据
一、需求分析需求一:用户信息宽表需求二:电商GMV需求三:商品相关指标需求四:用户行为漏斗二、生成数据为了保证大家在练习的时候计算的数据结果和我的保持一致,所以针对后面的测试数据就不再随机生成了,而是生成固定的数据,一共1个月的数据。从2026-02-01~2026-02-28的数据。1、执行代码注意,这里的校验码:JD3B37868104C5F2A这个校验码有效期只有1个月。以及下面hdfs的地址改成你自己的地址如下,说明执行完成了:2、去hdfs上检查数据是否生成这个是直接原创 2022-03-12 06:52:07 · 392 阅读 · 1 评论 -
数据仓库之【商品订单数据数仓】02:【dwd层】
一、分析针对ods层表中的数据进行清洗,参考数据清洗规则,按照实际情况对数据进行清洗。由于数据库中的数据都是比较规整的,其实可以直接迁移到dwd层,不过为了以防万一,还是对ods层的数据进行过滤,主要过滤表中的id字段为null的数据,在关系型数据库中表中的id字段都是主键,肯定是不为Null的,我们在这里进行判断主要是为了避免数据在采集过程中出现问题。二、构建dwd层1、dwd_user(1)源表ods_user(2)建表语句create external table if not ex原创 2022-03-12 06:51:50 · 799 阅读 · 0 评论 -
数据仓库之【商品订单数据数仓】01:【ods层】
一、ods层在ods层中需要创建以下针对商品订单数据的表表名 说明 导入方式ods_user 用户信息表 全量ods_user_extend 用户扩展表 全量ods_user_addr 用户收货地址表 全量ods_goods_info 商品信息表 全量ods_category_code 商品类目码表 全量ods_user_order 订单表 增量ods_order_item 订单商品表 增量ods_order_delivery原创 2022-03-12 06:51:35 · 990 阅读 · 0 评论 -
数据仓库之【用户行为数仓】14:用户行为数据仓库总结
一、数据库和表梳理二、任务脚本梳理三、用户行为所有涉及的脚本和数据如下下载地址:链接:https://pan.baidu.com/s/1A8oU_y6SwJ8eWTkrhFUjOw?pwd=91m5 提取码:91m5 注:里面包含所有的脚本,客户端埋点的数据、服务端的数据。服务端的数据直接导入到数据库,然后再使用sqoop导入到hdfs就行了。客户端埋点的数据直接使用hdfs dfs -put /data/ods/user_action下。...原创 2022-03-12 06:51:13 · 302 阅读 · 0 评论 -
数据仓库之【用户行为数仓】13:【dws层:数据汇总层】【app层:数据应用层】需求6:App崩溃相关指标
一、App崩溃相关指标分析这个需求是统计在不同平台系统不同版本下App崩溃的情况,统计这个数据可以方便排查定位问题,如果发现某一个版本的App崩溃频繁,则需要及时修复问题,推送新版本,提升用户体验。针对这个需求主要统计下面几个指标1、每日操作系统奔溃总计(安卓、IOS)2、每日安卓系统-不同APP版本奔溃量3、每日IOS系统-不同APP版本崩溃量这里面三个指标是有关联的,第一个是总的统计,第二个和第三个是不同维度的统计。二、思路针对第一个指标,使用dwd_app_close表中的数据,根据p原创 2022-03-12 06:50:46 · 519 阅读 · 0 评论 -
数据仓库之【用户行为数仓】12:【dws层:数据汇总层】【appc层:数据应用层】需求5:操作系统活跃用户相关指标
一、操作系统活跃用户相关指标分析这个需求是统计一下我们产品的目前主要用户群体是使用什么类型的操作系统。因为我们产品的app是有Android端和ios端的。如果我们的用户80%以上使用的都是Android,那么我们肯定要针对Android端的APP做更多的优化支持,这样可以保证大部分用户的使用体验。还有就是获取用户使用的手机型号,分辨率信息,这样可以更好的做适配。针对这个需求我们主要统计以下指标:1、操作系统活跃用户分布(安卓、IOS)2、安卓系统版本活跃用户分布3、IOS系统版本活跃用户分原创 2022-03-11 09:48:53 · 647 阅读 · 0 评论 -
数据仓库之【用户行为数仓】11:【dws层:数据汇总层】【appc层:数据应用层】需求4:每日启动App次数相关指标
一、每日启动App次数相关指标分析这个需求就是对每日打开app上报的数据进行统计。针对这个需求我们需要统计两个指标1、每日人均启动App次数2、每日APP启动次数分布(1次、2次、3次及以上)二、思路1、每日人均启动APP次数每日人均启动App次数=当日所有用户启动App总次数/当日所有人数针对这种需求,我们在计算结果的时候最好是把这个指标的分子和分母保存起来,这样这份数据后期还有可能被复用,如果直接保存最终的结果,这个数据就没办法复用了。1、基于dws_user_active_histo原创 2022-03-11 09:48:40 · 641 阅读 · 0 评论 -
数据仓库之【用户行为数仓】10:【dws层:数据汇总层】【appc层:数据应用层】需求3:用户7日流失push提醒
一、用户7日流失push提醒分析什么是流失?假设这个用户在2026年2月2日是新增用户,如果他在后续的7天内,也就是在2月9日内没有再使用app,则认为是流失用户,具体多少天属于流失用户,这个是需要产品经理根据对应产品的特点来定的,一般业内使用比较多的是7天这个时间点。push是什么意思呢?大家平时是不是深受各种app的提醒轰炸,我针对大部分的app都禁用了消息推送,要不然每天手机上会有各种各样的推送消息,很烦,这个其实就是软件给你push的消息。二、实现思路1、基于dws_user_activ原创 2022-03-11 09:48:27 · 356 阅读 · 0 评论 -
数据仓库之【用户行为数仓】09:【dws层:数据汇总层】【app层:数据应用层】需求2:每日活跃用户(主活)相关指标
一、每日活跃用户(主活)相关指标分析活跃用户的定义是指只要当天使用过APP就算是活跃用户,使用APP这种操作属于主动操作,所以这种活跃我们也会称为主动活跃,简称主活。针对这个需求统计的指标和新用户的指标类似1、每日主活用户量2、每日主活用户量的日环比和周同比1、每日主活用户量主活的概念和定义我们知道了,其实就是统计每天使用过app的用户,所以我们可以直接使用dws层的dws_user_active_history这个表。直接求和即可获取到当日的主活用户量,将最终的结果保存到app层的app_u原创 2022-03-11 09:48:11 · 440 阅读 · 0 评论 -
数据仓库之【用户行为数仓】08:【dws层:数据汇总层】【appc层:数据应用层】需求1:每日新增用户相关指标
一、每日新增用户相关指标分析在统计新增用户时,用户是以设备标识(xaid字段)来判断的,每一个设备都有一个唯一设备码。因为会存在用户不登录的情况,以及多人共用一个账号的情况,所以根据用户id进行过滤统计是不准确的。新增用户是指第一次安装并且使用app的用户,后期卸载之后再使用就不算新用户了,这个新增用户其实也可以称为新增设备,一个设备对应一个用户。1、每日新增用户量2、每日新增用户量的日环比和周同比二、每日新增用户量分析1、分析在时间工作中通过这个指标可以衡量我们产品的用户增长速度,如果每日原创 2022-03-11 09:47:58 · 826 阅读 · 0 评论 -
数据仓库之【用户行为数仓】07:需求分析以及生成1个月的测试数据
一、需求分析前面的两层中的表和需求一般没什么关系,就是把已有的数据接入进来。然后对数据进行清洗处理。但是后面的dws层和app层是和业务有关联的,所以在构建这两层中的表的时候,我们需要根据一些典型的业务场景来进行分析,在根据具体业务建表的时候尽可能把表设计的更加通用,可以满足后期一些类似业务需求。就是说我们在基于业务构建表的时候,不要直接一个SQL搞定,可以把一些复杂的SQL基于一些维度进行拆分,拆分出来一些中间表,再基于这些中间表统计最终的结果。这样这个中间表里的数据,我们后期针对一些类似的业务原创 2022-03-11 09:47:43 · 519 阅读 · 0 评论 -
数据仓库之【用户行为数仓】06:【dwd层】明细数据层:清洗ods层之后的数据
一、dwd层分析下面我们来创建dwd层:针对ods层表中的数据进行清洗,参考数据清洗规则,按照实际情况对数据进行清洗。注意:如果清洗规则使用SQL可以实现,那么就使用SQL实现数据清洗,如果清洗的规则使用SQL实现起来非常麻烦,或者使用SQL压根无法实现,此时就可以考虑需要使用MapReduce代码或者Spark代码对数据进行清洗了。由于我们这里采集的数据还是比较规整的,可以使用SQL实现,所以我们就直接使用SQL实现数据清洗了。二、创建dwd层数据库在hive中创建数据库dwd_mallc原创 2022-03-11 09:47:27 · 4076 阅读 · 0 评论 -
数据仓库之【用户行为数仓】05:【ods层】原始数据层创建
原创 2022-03-11 09:47:10 · 1576 阅读 · 0 评论 -
数据仓库之【用户行为数仓】03:数据采集、存储、可视化、架构设计、资源规划
咱们前面对项目的需求进行了分析,整体上来说是需要三个大的功能模块,那下面我们就来分析一下,想要实现这些功能模块,具体使用哪些技术框架比较合适。一、技术选型1、数据采集咱们前面学习了Flume这个数据采集工具其实还有一些类似的数据采集工具,Logstash、FileBeat,这两个也可以实现数据采集那这三个日志采集工具我们需要如何选择呢?首先从性能消耗上面来说,Flume和Logstash的性能消耗差不多,都是基于JVM执行的,都是重量级的组件,支持多种数据源和目的地。FileBeat是一个只支原创 2022-03-11 09:46:36 · 2485 阅读 · 0 评论 -
数据仓库之【用户行为数仓】04:数据生成与采集:用户行为数据、商品订单相关数据
接下来我们就来开发第一个模块:数据采集模块这一块内容在开发的时候,我们需要先生成测试数据,一份是服务端数据,还有一份是客户端数据一、数据生成1、【客户端数据】用户行为数据首先我们模拟生成用户行为数据,也就是客户端数据,主要包含用户打开APP、点击、浏览等行为数据用户行为数据:通过埋点上报,后端日志服务器(http)负责接收数据埋点上报数据基本格式:{"uid":1001, //用户ID"xaid":"ab25617-c38910-m2991", //手机设备ID"platform":原创 2022-03-11 09:46:50 · 2384 阅读 · 14 评论 -
数据仓库之【用户行为数仓】02:数据仓库介绍、数据仓库的特性、数据仓库基础、数据仓库分层、数据仓库系统架构、需求分析
一、什么是数据仓库咱们前面说了要构建一个数据仓库,那严格意义上来说,到底什么是数据仓库呢?咱们前面学习过Hive,说Hive其实就是一个数据仓库,可以这样理解,就是把Hive认为是一种技术,通过Hive这种技术可以实现数据仓库的建设。咱们这个项目中的数据仓库就是使用Hive构建的。来看一下针对数据仓库的官方解释:数据仓库(Data Warehouse)是一个面向主题的、集成的、稳定的且随时间变化的数据集合,用于支持管理人员的决策。二、数据仓库的特性1、面向主题主题就是类型的意思。传统数据库原创 2022-03-10 09:31:34 · 1249 阅读 · 0 评论 -
数据仓库之【用户行为数仓】01:项目效果展示、背景
一、项目效果展示大家好,下面我们来学习一个电商行业的数据仓库项目首先看一下项目效果本身我们这个数据仓库项目其实是一个纯后台项目,不过为了让大家能够更加直观的感受项目的效果,我们可以基于数据仓库中的数据统计一些指标进行展现。我们这个项目要讲的重点不是这个大屏,这个大屏只是一个效果,为了让大家感受更加直观一些而已,我们主要讲的是这些指标对应的底层数据是如何在数据仓库中一层一层构建的。二、项目的由来接下来我们来看一下这个项目的由来,我们为什么要做这个数据仓库项目呢?或者说做这个数据仓库项目有什么意义原创 2022-03-10 09:31:10 · 610 阅读 · 0 评论 -
Hive10:Hive数据倾斜的解决方案
一、一个SQL语句分析SELECT a.Key , SUM(a.Cnt) AS CntFROM ( SELECT Key , COUNT(*) AS Cnt FROM TableName GROUP BY Key, CASE WHEN Key = 'KEY001' THEN Hash(Random()) % 50 ELSE 0 END) aGROUP BY a.Key;原创 2022-03-05 15:43:24 · 258 阅读 · 0 评论 -
Hive09:Hive的函数操作:基本函数使用、高阶函数应用
一、函数的基本操作二、Hive高级函数应用原创 2022-03-05 15:43:09 · 799 阅读 · 0 评论 -
Hive08:Hive的进阶操作04之综合案例:外部分区表和视图实现使用SQL按天统计每天使用Flume采集到HDFS上数据的相关指标
综合案例接下来我们来看一个综合案例,主要使用外部分区表和视图实现需求:Flume按天把日志数据采集到HDFS中的对应目录中,使用SQL按天统计每天数据的相关指标分析一下:Flume按天把日志数据保存到HDFS中的对应目录中针对Flume的source可以使用execsource、channel可以使用基于文件的或者内存的,sink使用hdfssink,在hdfssink的path路径中需要使用%Y%m%d获取日期,将每天的日志数据采集到指定的hdfs目录中这个是我们在前面学习Flume的时候已经原创 2022-03-05 15:42:53 · 411 阅读 · 0 评论 -
Hive07:Hive的进阶操作03之Hive中的表类型:内部表、外部表、分区表、桶表以及视图
Hive中的表类型在Mysql中没有表类型这个概念,因为它就只有一种表。但是Hive中是有多种表类型的,我们可以分为四种,内部表、外部表、分区表、桶表下面来一个一个学习一下这些类型的表原创 2022-03-05 15:42:24 · 1418 阅读 · 1 评论 -
Hive06:【案例】Hive的进阶操作02之复合数据类型的使用
案例:复合数据类型的使用在这里我们把前面学到的这三种复合数据类型结合到一块来使用一下。有一份数据是这样的原创 2022-03-05 15:42:07 · 231 阅读 · 0 评论 -
Hive05:Hive的进阶操作01之数据库和表的操作、数据类型
一、Hive中数据库操作二、Hive中表的操作三、Hive中的数据类型1、基本数据类型2、复合数据类型(1)Array(2)Map(3)Struct(4)Struct和Map的区别原创 2022-03-05 15:41:40 · 1289 阅读 · 0 评论 -
Hive04:Hive的基本操作:命令行操作、JDBC方式操作以及Set命令的使用
一、Hive的使用方式操作Hive可以在Shell命令行下操作,或者是使用JDBC代码的方式操作下面先来看一下在命令行中操作的方式二、命令行方式针对命令行这种方式,其实还有两种使用1、hive命令第一个是使用bin目录下的hive命令,这个是从hive一开始就支持的使用方式后来又出现一个beeline命令,它是通过HiveServer2服务连接hive,它是一个轻量级的客户端工具,所以后来官方开始推荐使用这个。具体使用哪个我觉得属于个人的一个习惯问题,特别是一些做了很多年大数据开发的人,已经原创 2022-03-05 15:41:20 · 2775 阅读 · 0 评论 -
Hive03:Hive安装部署
一、Hive安装部署想要安装Hive,那首先要下载Hive的安装包,进入Hive的官网,找到download下载链接。发现目前hive主要有三大版本,Hive1.x、Hive2.x、Hive3.xHive1.x已经2年没有更新了,所以这个版本后续基本不会再维护了,不过这个版本已经迭代了很多年了,也是比较稳定的Hive2.x最近一直在更新Hive3.x上次是19年8月份更新的,也算是一直在维护那我们到底选择哪个版本呢?注意了,在选择Hive版本的时候我们需要注意已有的Hadoop集群的版本。因原创 2022-03-05 15:41:02 · 952 阅读 · 0 评论 -
Hive02:数据库与数据仓库的区别,以MySQL和Hive做个对比
一、Hive VS Mysql为了加深对Hive的理解,下面我们拿Hive和我们经常使用的Mysql做一个对比 HIVE MySQL数据存储位置 HDFS 本地磁盘数据格式 用户定义 系统决定数据更新 不支持(不支持修改和删除) 支持(支持增删改查)索引 有,但较弱,一般很少用 有,经常使用的执行 MapReduce Executor执行延迟 高 低可扩展性 高 低数据规模 大原创 2022-03-05 15:40:39 · 601 阅读 · 0 评论 -
Hive01:什么是Hive?
一、什么是HiveHive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载,可以简称为ETL。Hive 定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户直接查询Hadoop中的数据,同时,这个语言也允许熟悉MapReduce的开发者开发自定义的mapreduce任务来处理内建的SQL函数无法完成的复杂的分析任务。Hive中包含的有SQL解析引擎,它会将SQL语句转译成M/R Job,然后在Hadoop中执行。通过这里的分析我们可以了解到Hi原创 2022-03-05 15:40:16 · 241 阅读 · 0 评论