当前位置: 首页 > news >正文

学习大数据DAY40 基于 hive 的数据处理

目录

Hive 复合数据定义方法

Hive 复合数据查询方法

hive 内置函数

上机练习


Hive 复合数据定义方法

Hive 复合数据查询方法

hive 内置函数

-- 查看系统自带的函数
show functions;
-- 显示自带的函数的用法
desc function upper;
-- 详细显示自带的函数的用法
desc function extended upper;

上机练习

1 导入 user 数据 id name sex age address date lev s_info m_info a_info
2 使用三种复合数据类型 struct map array 存储 info 数据
python 清洗数据:
with open(r"D:\智云大数据\数据源
\user\user_info.txt",'r',encoding="utf-8") as f:
LineRead=f.readlines()
# print(LineRead)
for i in LineRead:
list1=[]
list_i=i.split('\t')
# print(list_i)
# 把字典的值复制加到每行的末尾
for j in eval(list_i[7]).values():
list1.append(j)
str1='|'.join(list1)
list_i[7]=str1
list_i.append(str1)
# print(list_i)
list_i[8]='|'.join(list_i[8].split(',')).strip('\n') #
把第九列转化成可以导入 struct 的形式
str_i=','.join(list_i) # 每行每个数据用逗号隔开
# print(str_i)
with open(r"D:\智云大数据
\user_info_disposal_new.txt",'a',encoding='utf-8') as h:
h.writelines(str_i+"\n")
h.close()
f.close()
hive 建表和导入数据:
drop table if exists user_info;
create table if not exists user_info
(
id int,
name string,
sex string,
age tinyint,
address string,
date_info string,
lev tinyint,
a_info array<string>,
m_info map<string,string>,
s_info
struct<systemtype:string,education:string,marriage_status:string,phon
ebrand:string>
)
row format delimited
fields terminated by ','
collection items terminated by '|'
MAP keys terminated by ':'
lines terminated by '\n'
load data local inpath '/root/user_info_disposal_new.txt'
into table user_info;
结果:(双击 object 能看见值)
3 指标计算
3.1 按月统计各个地区男女生人数
select date_format(date_info,'YYYY-MM'),address,sex,count(1) from
user_info
group by date_format(date_info,'YYYY-MM'),address,sex3.2 统计各地区的不同手机型号使用人数,并按照老中青(35 以下青年 男 65 岁
以下女 55 岁以下中年 男 65 岁以上女 55 岁以上老年)年龄 划分
地区 安卓使用人数{老 中 青} ios 使用人数{老 中 青}
with SystemtypeAndAge as
(
select
case when m_info["systemtype"]='android' then 'android'
when m_info["systemtype"]='ios' then 'ios'end as systemtype,
case when age<35 then '青年'
when sex='male' and age<65 or sex='female' and age<55 then '中年'
else '老年'
end as AgeBracket
from user_info
)
select systemtype,AgeBracket,count(1) from SystemtypeAndAge
group by systemtype,AgeBracket

3.2 统计各地区的不同手机型号使用人数,并按照老中青(35 以下青年 男 65 岁
以下女 55 岁以下中年 男 65 岁以上女 55 岁以上老年)年龄 划分
地区 安卓使用人数{老 中 青} ios 使用人数{老 中 青}
with SystemtypeAndAge as
(
select
case when m_info["systemtype"]='android' then 'android'
when m_info["systemtype"]='ios' then 'ios'end as systemtype,
case when age<35 then '青年'
when sex='male' and age<65 or sex='female' and age<55 then '中年'
else '老年'
end as AgeBracket
from user_info
)
select systemtype,AgeBracket,count(1) from SystemtypeAndAge
group by systemtype,AgeBracket

3.3 统计不同地区,不同学历,使用的手机品牌(去重)collect_list
地区 学历 手机品牌列表
select user_info.address,education
,collect_list(distinct m_info["phonebrand"])
from user_info
left join
(
select address,
case m_info["education"] when "bachelor" then 'bachelor'
when "doctor" then 'doctor'when "master" then 'master'
end as education
from user_info
) EducationInAddress on user_info.address=EducationInAddress.address
group by user_info.address,education

3.4 统计不同等级,各个手机品牌的使用人数(需要行转列)
等级 phonebrand_list
{iphone6:5 iphone7:5 .....mi:5 .....iphoneXS:2}
这题我不会,老师沉迷黑吗喽作业视频讲解都还没发......
第三阶段太吃自学能力了,hive语法基本要去网上找。
http://www.lryc.cn/news/428888.html

相关文章:

  • [数据集][目标检测]手钳检测数据集VOC+YOLO格式141张1类别
  • SQL注入(head、报错、盲注)
  • 30. 包含 min 函数的栈
  • 五、OpenTK图形渲染基础
  • 桔子哥/基于云快充协议1.5版本的充电桩系统软件-充电桩系统 -新能源车充电平台源码
  • 零基础5分钟上手亚马逊云科技-高可用Web系统设计最佳实践
  • 培训学校课程管理系统-计算机毕设Java|springboot实战项目
  • 基于STM32的智能婴儿床控制系统设计(手机APP+蓝牙无线控制)(210)
  • 四、前后端分离通用权限系统(4)
  • 时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention
  • 计算机毕业设计PySpark+Flask bilibili弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 NLP自然语言处理 大数据毕业设计
  • 点击展开详细说明网站html引导页源码
  • Android 架构模式之 MVP
  • Ciallo~(∠・ω・ )⌒☆第二十二篇 入门request请求库使用
  • 设计模式-创建型模式-原型模式
  • 遗传算法与深度学习实战(7)——使用遗传算法解决N皇后问题
  • R语言:如何安装包“linkET”
  • JSON, YAML, XML, CSV交互可视化
  • Android UI:PopupWindow:源码分析:设置WindowManager.LayoutParams中的各种参数
  • MySQL:从入门到放弃
  • C++OpenGL三维显示镜面反射光线漫反射实例
  • 【前端面试】从npm 升级到 pnpm的总结
  • 同步外网YUM源-3
  • Linux的oracle数据库导入其他用户导出的数据库文件
  • FLUX.1 文生图模型微调指南
  • JavaWeb基础:HTTP协议与Tomcat服务器
  • python井字棋游戏设计与实现
  • 据说是可以和 Windows 一拼的 5个 Linux 发行版
  • PHP 常用函数
  • 如何将MySQL迁移到TiDB,完成无缝业务切换?