bigdata-19-Hive核心操作

简介: bigdata-19-Hive核心操作

4.6 Hive 核心操作


库操作


  • 查看数据库列表


show databases;


  • 选择数据库


use default;


  • 创建数据库


create database mydb1;


  • 在hdfs目录下查看创建的数据库



  • 删库(敏感操作)


drop database mydb1;


表操作


  • 创建表


create table t2(id int);


  • 查看表结构


describe t2;


  • 查看表创建信息


show create table t2;


  • 重命名


alter table t2 rename to t2_bak;


  • 加载数据


我们在Linux上创建一个名为t2.data的文件


里面存放数据


1


2


3


4


5


load data local inpath '/data/soft/hivedata/t2.data' into table default.t2_bak


即可加载数据文件数据到表中


除了这种方式外,hdfs还支持可视化操作,直接在文件浏览器中可视化的上传数据到表指定文件夹下即可映射数据结构


  • 查看表中数据


select * from t2_bak;


  • 表增加字段及注释、删除表


在工作中会有给已存在的表增加字段的需求,需要使用alter命令 在这里我们给t2_bak表增加一个name字段,重新查看表结构信息,再查询一下这个表中的数据,结果发 现,第二列为null,这是正常的,因为我们的数据数据文件中就只有一列,第二列查询不到,就显示为 null,不会报错,这一点要注意一下。


alter table t2_bak add columns (name string);


  • 删除表


drop table t2;


  • 指定列和行分隔符的指定


create table t3_new( 
  id int comment 'ID', 
  stu_name string comment 'name', 
  stu_birthday date comment 'birthday',
  online boolean comment 'is online' 
)row format delimited 
fields terminated by '\t' 
lines terminated by '\n';


案例:Hive复合数据类型实操


Array


数组数据结构


举例数据:

序号

姓名

爱好

1

zhangsan

swing,sing,coding

2

lisi

music,football


这里爱好一列就是Array数据结构


建表语句如下:


create table stu( 
  id int, 
  name string, 
  favors array<string> 
)
row format delimited 
fields terminated by '\t' 
collection items terminated by ',' 
lines terminated by '\n';


加载数据语句:


load data local inpath '/data/soft/hivedata/stu.data' into table default.stu


查询结果:


-- 查询全部
hive (default)> select * from stu;
stu.id stu.name stu.favors 
1 zhangsan ["swing","sing","coding"] 
2 lisi ["music","football"]
-- 查询所有学生的第二个爱好
hive (default)> select id,name,favors[1] from stu;
1 zhangsan sing 
2 lisi football


角标是从0开始的,如果查询不到会返回null值


Map


map集合里面存储的是键值对


举例数据:

序号

姓名

成绩

1

zhangsan

chinese:80,math:90,english:100

2

lisi

chinese:89,english:70,math:88


这里成绩就是map数据结构


建表语句如下:


create table stu2( 
  id int, 
  name string, 
  scores map<string,int> 
)
row format delimited 
fields terminated by '\t' 
collection items terminated by ',' 
map keys terminated by ':'
lines terminated by '\n';


加载数据:


load data local inpath '/data/soft/hivedata/stu2.data' into table default.stu2


查询结果:


-- 查询全部
hive (default)> select * from stu2;
stu2.id stu2.name stu2.scores 
1 zhangsan {"chinese":80,"math":90,"english":100} 
2 lisi {"chinese":89,"english":70,"math":88}
-- 查询所有学生的语文和数学成绩
hive (default)> select id,name,scores['chinese'],scores['math'] from stu2;
id name _c2 _c3 
1 zhangsan 80 90 
2 lisi 89 88


Struct


结构体这种数据类型有点像Java中的对象


举例数据

序号

姓名

地址(户籍地址,公司城市)

1

zhangsan

bj,sh

2

lisi

gz,sz


建表语句如下:


create table stu3( 
  id int, 
  name string, 
  address struct<home_addr:string,office_addr:string> 
)
row format delimited 
fields terminated by '\t' 
collection items terminated by ',' 
lines terminated by '\n';


这里的地址字段我们就以结构体来定义,用于区分用户的家庭住址和工作地点


查询数据:


-- 查询所有
hive (default)> select * from stu3; 
stu3.id stu3.name stu3.address 
1 zhangsan {"home_addr":"bj","office_addr":"sh"} 
2 lisi {"home_addr":"gz","office_addr":"sz"} 
-- 查询用户家庭住址
hive (default)> select id,name,address.home_addr from stu3; 
id name home_addr 
1 zhangsan bj
2 lisi gz


Struct与Map对比


  • map中可以随意增加k-v对的个数 struct中的k-v个数是固定的
  • map在建表语句中需要指定k-v的类型 struct在建表语句中需要指定好所有的属性名称和类型
  • map中通过[]取值 struct中通过.取值,类似java中的对象属性引用
  • map的源数据中需要带有k-v struct的源数据中只需要有v即可


综合应用案例


举例数据

序号

姓名

爱好

成绩

地址(户籍地址,公司城市)

1

zhangsan

english,sing,swing

chinese:80,math:90,english:100

bj,sh

2

Lisi

games,coding

chinese:89,english:70,math:88

gz,sz


建表语句:


create table student ( 
  id int comment 'id', 
  name string comment 'name', 
  favors array<string> , 
  scores map<string, int>, 
  address struct<home_addr:string,office_addr:string> 
) 
row format delimited 
fields terminated by '\t' 
collection items terminated by ',' 
map keys terminated by ':'
lines terminated by '\n';


生产场景


问:在mysql中有一张表student(id,name),还有一张表address(stu_id, home,school),还有联系方式表contact(stu_id,mine,parents,others)。如果把这三张表迁移到hive中, 如何迁移?


答: 可以一一对应迁移,优点是迁移成本非常低,包括DDL和业务逻辑,几乎不需要修改,可以直接使用。缺 点是产生大量的表连接,造成查询慢。 可以一对多,mysql中的多张关联表可以创建为hive中的一张表。优点是减少表连接操作。缺点是迁移成 本高,需要修改原有的业务逻辑。 实际上,在我们日常的开发过程中遇到这样的问题,要想比较完美、顺利的解决,一般都分为两个阶段, 第一个阶段,现在快捷迁移,就是上面说的一一对应,让我们的系统能跑起来,在此基础之上呢,再做一 张大表,尽量包含以上所有字段,例如: stu(id, name, address struct<home,school>, contact struct<…>); 等第二个阶段完工之后了,就可以跑在新的系统里面了。

目录
相关文章
|
缓存 Kubernetes API
K8S Pod 停止不掉一直处于Terminating状态问题解决
主要是从pod 停止不掉一直处于Terminating到 发现k8s node处于NotReady状态,在发现为什么处于NotReady , 再到发现node 状态因为PLEG is not healthy: pleg was last seen active 等问题
5070 0
K8S Pod 停止不掉一直处于Terminating状态问题解决
|
存储 消息中间件 缓存
相比游戏客户端,游戏服务端开发无关紧要吗
感觉游戏服务端,除了更新,保存数据啊、生成随机物品啊、都没什么了,好像游戏开发场景中,服务端已经无关紧要了。看着客户端忙成狗,正在摸鱼的你是否也有过这样的疑问?
1539 0
相比游戏客户端,游戏服务端开发无关紧要吗
|
1月前
|
弹性计算 监控 测试技术
阿里云通用算力型u1实例2核4G5M带宽199元1年还有吗?在哪购买?购买入口与性能解析
本文介绍了阿里云通用算力型u1实例199元/年的特惠活动,针对初创企业寻找高性价比入门云服务器的核心需求,系统拆解这款2核4G5M配置实例的核心参数、性能特点、覆盖地域与适用场景,详解活动开放规则、新购与续费权益及专属购买入口。文章同时将其与38元起轻量应用服务器、99元经济型e实例做多维度横向对比,给出分优先级的选型决策策略,帮助不同预算、不同技术基础的用户精准匹配最适配自身业务的入门云服务器方案。
|
存储 C++
SAP 盘盈盘亏移动类型701&702 Vs 711&&712(二)
SAP 盘盈盘亏移动类型701&702 Vs 711&&712(二)
SAP 盘盈盘亏移动类型701&702 Vs 711&&712(二)
|
设计模式 网络协议 Java
09.接口vs抽象类比较
本文详细对比了接口与抽象类的区别及应用场景,涵盖两者的基本概念、特性以及设计思想。通过具体案例分析,如日志记录和过滤器功能,阐明抽象类适用于代码复用(is-a关系),而接口侧重解耦和行为定义(has-a关系)。此外,还探讨了如何在不支持接口或抽象类的语言中模拟其实现,并总结了选择两者的判断标准。文章结合实际开发场景,提供了清晰的指导,帮助开发者更好地理解与应用这两种核心面向对象概念。
638 26
|
人工智能 运维 云计算
专家对谈|AI推动文化传媒行业向“新”发展
随着“人工智能+”行动的深入推进,文化传媒行业正经历深刻变革。云计算与AI深度融合,重构内容生产、分发全流程,为行业注入新动能。预计到2025年,我国AI核心产业规模将破万亿,文化传媒作为技术应用先锋,以两位数增速迈向智能化。在CCBN活动现场,中央广播电视总台与阿里云探讨了大模型如何驱动行业升级,展望未来新图景。汪莹指出,大模型将重构文化消费形态,助力生产力与传播力倍增,推动中国文化走向世界。同时,解决AI应用“最后一公里”问题需产业链各方协同发力,基于现有大模型能力进行二次开发是切实可行路径。
967 4
|
云安全 人工智能 安全
GenAI浪潮下的安全2.0升级
本次分享的主题是GenAI浪潮下的安全2.0升级,由阿里云智能集团专家团队带来。内容涵盖生成式人工智能云上实践、安全大模型构建智能运营最佳实践以及复杂对抗场景下的AI人脸鉴伪。
703 3
|
编解码 监控
如果流量超了,怎么规划后面的使用
如果流量已经超出限额,而距离流量结算日(比如月末)还有十一天,可以考虑以下几种方法来更经济地使用剩余的日子:
|
机器学习/深度学习 数据采集 传感器
基于深度学习的图像识别技术在自动驾驶中的应用研究####
本文旨在探讨深度学习技术,特别是卷积神经网络(CNN)在自动驾驶车辆图像识别领域的应用与进展。通过分析当前自动驾驶技术面临的挑战,详细介绍了深度学习模型如何提升环境感知能力,重点阐述了数据预处理、网络架构设计、训练策略及优化方法,并展望了未来发展趋势。 ####
693 6
|
数据安全/隐私保护
s3cmd安装及使用
s3cmd安装及使用