赞
踩
看的黑马的视频做的笔记:
视频:第四章-09-[实操]DataGrip&DBeaver连接HiveServer2使用_哔哩哔哩_bilibili
资源:百度网盘 请输入提取码
- 在各服务器一键启动hadoop组件
-
- start-all.sh
-
- 在hive安装的服务器上,首先启动metastore服务,然后启动hiveserver2服务
- (便于后面使用图像化软件管理hive)
-
- 进入hive文件夹下
-
- cd /export/server
-
- 启动metastore和hiveserver2
-
- nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
- nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &
使用jps检查各组件启动情况
查看10000端口号是否被监听
netstat -anp|grep 10000
下载安装后打开
点击编辑驱动设置,删除原有的驱动,换成自己的驱动
确认后进行连接测试
1.检查metastore和hiveserver2是否打开,查看10000端口号是否被监听。否,重复1.1步骤
2.打开windows终端,ping linux ip 地址能否 ping 通。否,解决问题
虚拟机网络配置教程,ping不通的几种原因及解决办法_ping不通虚拟机ip地址的原因-CSDN博客
【Hadoop】-FineBI的介绍及安装[16]-CSDN博客
目标
- 1.统计今日总消息量
- 2.统计今日每小时消息量、发送和接收用户数
- 3.统计今日各地区发送消息数据量
- 4.统计今日发送消息和接收消息的用户数
- 5.统计今日发送消息最多的Top10用户
- 6.统计今日接收消息最多的Top10用户
- 7.统计发送人的手机型号分布情况
- 8.统计发送人的设备操作系统分布情况
- 使用DBeaver管理
-
- 1.建立数据库和表
-
- #如果数据库已存在就删除
- drop database if exists db_msg cascade;
-
- #创建数据库
- create database db_msg;
-
- #切换数据库
- use db_msg;
-
-
- #如果表已存在就删除
- drop table if exists db_msg.tb_msg_source;
-
- #建表
-
- create table db_msg.tb_msg_source(
- msg_time string comment "消息发送时间",
- sender_name string comment "发送人昵称",
- sender_account string comment "发送人账号",
- sender_sex string comment "发送人性别",
- sender_ip string comment "发送人ip地址",
- sender_os string comment "发送人操作系统",
- sender_phonetype string comment "发送人手机型号",
- sender_network string comment "发送人网络类型",
- sender_gps string comment "发送人的GPS定位",
- receiver_name string comment "接收人昵称",
- receiver_ip string comment "接收人IP",
- receiver_account string comment "接收人账号",
- receiver_os string comment "接收人操作系统",
- receiver_phonetype string comment "接收人手机型号",
- receiver_network string comment "接收人网络类型",
- receiver_gps string comment "接收人的GPS定位",
- receiver_sex string comment "接收人性别",
- msg_type string comment "消息类型",
- distance string comment "双方距离",
- message string comment "消息内容"
- );
-
-
-
- 将chat_data-30W.csv文件传到Linux中'/home/hadoop/下
- #加载数据到表中
- load data local inpath '/home/hadoop/chat_data-30W.csv' overwrite into table tb_msg_source;
- #验证结果:
- select
- msg_time, sender_name, sender_ip, sender_phonetype, receiver_name, receiver_network
- from tb_msg_source limit 10;

- select
- msg_time, sender_name, sender_gps
- from db_msg.tb_msg_source
- where length(sender_gps) = 0
- limit 10;
-
-
- select
- msg_time
- from db_msg.tb_msg_source
- limit 10;
-
-
- select
- sender_gps
- from db_msg.tb_msg_source
- limit 10;

- 建表
- create table db_msg.tb_msg_etl(
- msg_time string comment "消息发送时间",
- sender_name string comment "发送人昵称",
- sender_account string comment "发送人账号",
- sender_sex string comment "发送人性别",
- sender_ip string comment "发送人ip地址",
- sender_os string comment "发送人操作系统",
- sender_phonetype string comment "发送人手机型号",
- sender_network string comment "发送人网络类型",
- sender_gps string comment "发送人的GPS定位",
- receiver_name string comment "接收人昵称",
- receiver_ip string comment "接收人IP",
- receiver_account string comment "接收人账号",
- receiver_os string comment "接收人操作系统",
- receiver_phonetype string comment "接收人手机型号",
- receiver_network string comment "接收人网络类型",
- receiver_gps string comment "接收人的GPS定位",
- receiver_sex string comment "接收人性别",
- msg_type string comment "消息类型",
- distance string comment "双方距离",
- message string comment "消息内容",
- msg_day string comment "消息日",
- msg_hour string comment "消息小时",
- sender_lng double comment "经度",
- sender_lat double comment "纬度"
- );
-
-
- 实现ETL
- INSERT OVERWRITE TABLE db_msg.tb_msg_etl
- SELECT
- *,
- date(msg_time) as msg_day,
- HOUR(msg_time) as msg_hour,
- split(sender_gps, ',')[0] AS sender_lng,
- split(sender_gps, ',')[1] AS sender_lat
- FROM tb_msg_source WHERE LENGTH(sender_gps) > 0;
-
-
- 查看结果
- select
- msg_time, msg_day, msg_hour, sender_gps, sender_lng, sender_lat
- from db_msg.tb_msg_etl
- limit 10;

其实我们刚刚完成了
从表tb_msg_source 查询数据进行数据过滤和转换,并将结果写入到:tb_msg_etl表中的操作
这种操作,本质上是一种简单的ETL行为。
ETL:
从A抽取数据(E),进行数据转换过滤(T),将结果加载到B(L),就是ETL
- 1.统计今日总消息量
- 2.统计今日每小时消息量、发送和接收用户数
- 3.统计今日各地区发送消息数据量
- 4.统计今日发送消息和接收消息的用户数
- 5.统计今日发送消息最多的Top10用户
- 6.统计今日接收消息最多的Top10用户
- 7.统计发送人的手机型号分布情况
- 8.统计发送人的设备操作系统分布情况
- 指标1:统计今日消息总量
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS tb_rs_total_msg_cnt
- COMMENT "每日消息总量" AS
- SELECT
- msg_day,
- COUNT(*) AS total_msg_cnt
- FROM db_msg.tb_msg_etl
- GROUP BY msg_day;
-
-
- 指标2:统计每小时消息量、发送和接收用户数
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS tb_rs_hour_msg_cnt
- COMMENT "每小时消息量趋势" AS
- SELECT
- msg_hour,
- COUNT(*) AS total_msg_cnt,
- COUNT(DISTINCT sender_account) AS sender_usr_cnt,
- COUNT(DISTINCT receiver_account) AS receiver_usr_cnt
- FROM db_msg.tb_msg_etl GROUP BY msg_hour;
-
-
- 指标3:统计今日各地区发送消息总量
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS tb_rs_loc_cnt
- COMMENT '今日各地区发送消息总量' AS
- SELECT
- msg_day,
- sender_lng,
- sender_lat,
- COUNT(*) AS total_msg_cnt
- FROM db_msg.tb_msg_etl
- GROUP BY msg_day, sender_lng, sender_lat;
-
-
- 指标4:统计今日发送和接收用户人数
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS tb_rs_usr_cnt
- COMMENT "今日发送消息人数、接受消息人数" AS
- SELECT
- msg_day,
- COUNT(DISTINCT sender_account) AS sender_usr_cnt,
- COUNT(DISTINCT receiver_account) AS receiver_usr_cnt
- FROM db_msg.tb_msg_etl
- GROUP BY msg_day;
-
-
- 指标5:统计发送消息条数最多的Top10用户
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS db_msg.tb_rs_s_user_top10
- COMMENT "发送消息条数最多的Top10用户" AS
- SELECT
- sender_name AS username,
- COUNT(*) AS sender_msg_cnt
- FROM db_msg.tb_msg_etl
- GROUP BY sender_name
- ORDER BY sender_msg_cnt DESC
- LIMIT 10;
-
-
- 指标6:统计接收消息条数最多的Top10用户
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS db_msg.tb_rs_r_user_top10
- COMMENT "接收消息条数最多的Top10用户" AS
- SELECT
- receiver_name AS username,
- COUNT(*) AS receiver_msg_cnt
- FROM db_msg.tb_msg_etl
- GROUP BY receiver_name
- ORDER BY receiver_msg_cnt DESC
- LIMIT 10;
-
-
- 指标7:统计发送人的手机型号分布情况
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS db_msg.tb_rs_sender_phone
- COMMENT "发送人的手机型号分布" AS
- SELECT
- sender_phonetype,
- COUNT(sender_account) AS cnt
- FROM db_msg.tb_msg_etl
- GROUP BY sender_phonetype;
-
- 指标8:统计发送人的手机操作系统分布
-
- --保存结果表
- CREATE TABLE IF NOT EXISTS db_msg.tb_rs_sender_os
- COMMENT "发送人的OS分布" AS
- SELECT
- sender_os,
- COUNT(sender_account) AS cnt
- FROM db_msg.tb_msg_etl
- GROUP BY sender_os

点击右上角连接测试保存
点击更新数据
根据组件自己编辑:
每个图都是一个组件,选择自己喜欢的可视化样式,最后放入一个仪表盘中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。