离线数仓----以及---hive的一些琐碎

1、datagrip的使用

1.1、如何使用datagrip连接hive呢?

启动起hadoop集群(因为要在hdfs上看),然后启动hiveserver2(在家目录~下 nohup hiveserver2 &),然后就可以用datagrip了。
如果想用hive的客户端,也就是图形化工具,例如datagrip图形化工具的时候。就需要在启动hadoop之后,启动hiveserver2。
在这里插入图片描述

需要注意的是:hive所在的机器,xshell一定要连接上,如果连接不上,就会报错。
---- hive安装在了第一台机器上,结果第一台机器上xshell就是连接不上。然后xshell连接上了第二台机器,然后想着用ssh 第一台机器,然后就相当于是连接上第一台机器了,这样做是错误的。datagrip会抱错误:java.net.UnknownHostException,也就是会爆出连接不上hive所在的机器,这样做就是让客户端连接不到hive。

启动了多种服务的话,不知道哪个进程?
jpsall -ml ,也就是关键的 -ml。jpsall是自己配置的脚本。

1.2、写SQL时候的快捷键

行显示转换为列显示。

Ctrl + Alt + l,字段在一行的时候,转换为列显示。

在这里插入图片描述

在这里插入图片描述

修改某一列的数据

Alt + shift,然后鼠标左击某个位置,依次往下点击,也就是点击一列。于是就可以同时修改。

2、数仓中增加字段怎么办?

1.整个数仓有几张要增加字段的,就执行改几张,分区表改的时候有些区别。
2.这种方法有时候不太保险,最好的是,对应的表你重建一张表,把原来表的数据into进去,新加字段补null。
//因为原来的表中没有新添加的额那个字段,所以给新添加的按个字段赋值为null。
就像这样。

insert overwrite 新表
select * ,null as 新字段 from 原表。

重建表的时候,还是用原来的创建表的脚本,就是里面加上我们要添加的字段。

3.之后再把原来的表删除,新表改成原来表的表名。

先建张新表,把字段加进来,然后把老表的数据insert 进来,新加的字段位置补null替代,查看数据正常后,把老表先改名加_back,用于备份,新表改成老表名,整个流程结束

3、hive on spark和spark on hive啥区别

spark on hive 计算引擎用的spark,其他的是hive。
底层前者是rdd,后者是df或者ds。

4、拉链表(维度表下的新增和变化)

拉链表:缓慢变化维度,注意是缓慢变化维度。注意缓慢这两个字。缓慢变化维度表,不设置分区表,就是一张表。注意是维度表哦!! 每天在更新,调度任务脚本是每天在跑,每天在进行拉链。

4.1、拉链表的创建过程(全量表,没有分区的时候)

----------拉链表-----------
--1.创建拉链表
create external table dwd_dim_user_info_his
(
    `id`           string COMMENT '用户id',
    `name`         string COMMENT '姓名',
    `birthday`     string COMMENT '生日',
    `gender`       string COMMENT '性别',
    `email`        string COMMENT '邮箱',
    `user_level`   string COMMENT '用户等级',
    `create_time`  string COMMENT '创建时间',
    `operate_time` string COMMENT '操作时间',
    `start_date`   string COMMENT '有效开始日期',
    `end_date`     string COMMENT '有效结束日期'
) COMMENT '用户拉链表'
    stored as parquet
    location '/warehouse/gmall/dwd/dwd_dim_user_info_his/'
    tblproperties ("parquet.compression" = "lzo");

--2,初始化拉链表
insert overwrite table dwd_dim_user_info_his
select id,
       name,
       birthday,
       gender,
       email,
       user_level,
       create_time,
       operate_time,
       '2020-06-14' start_date,
       '9999-99-99' end_date
from ods_user_info
where dt = '2020-06-14';

--3.创建临时拉链表
create external table dwd_dim_user_info_his_tmp
(
    `id`           string COMMENT '用户id',
    `name`         string COMMENT '姓名',
    `birthday`     string COMMENT '生日',
    `gender`       string COMMENT '性别',
    `email`        string COMMENT '邮箱',
    `user_level`   string COMMENT '用户等级',
    `create_time`  string COMMENT '创建时间',
    `operate_time` string COMMENT '操作时间',
    `start_date`   string COMMENT '有效开始日期',
    `end_date`     string COMMENT '有效结束日期'
) COMMENT '订单拉链临时表'
    stored as parquet
    location '/warehouse/gmall/dwd/dwd_dim_user_info_his_tmp/'
    tblproperties ("parquet.compression" = "lzo");


--4.拉链
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
insert overwrite table dwd_dim_user_info_his_tmp
select *
from (
         select id,
                name,
                birthday,
                gender,
                email,
                user_level,
                create_time,
                operate_time,
                '2020-06-15' start_date,
                '9999-99-99' end_date
         from ods_user_info
         where dt = '2020-06-15'
         union all
         select old.id,
                old.name,
                old.birthday,
                old.gender,
                old.email,
                old.user_level,
                old.create_time,
                old.operate_time,
                old.start_date,
                `if`(new.id is not null and old.end_date = '9999-99-99', date_add(new.dt, -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值