Hive基础笔记

安装Hive并连接MySQL

ubuntukylin-22.04.1安装Hive、MySQL、配置Hive及Hive连接MySQL操作

启动/退出Hive

启动并登陆mysql shell

bash 复制代码
service mysql start	# 启动mysql服务
mysql -u root -p  # 登陆shell界面

启动hive之前,请先启动hadoop集群

启动hive

进入hive安装目录(笔者的安装目录为/usr/local/hive)

bash 复制代码
cd /usr/local/hive
./bin/hive

退出Hive交互式执行环境

bash 复制代码
exit;

相关操作

创建数据库:

sql 复制代码
create database ykb;

创建数据库并指定创建位置:

sql 复制代码
create database tt
    > location '/tt.db';

创建表并指定位置且定义数据结构:

sql 复制代码
create table tt
    > (id int,name string,address struct<city:string,distrct:string>,info map<string,string>)
    > location '/tt.db/tt';

以',','|',';'为分隔符创建表:

sql 复制代码
create table gstudent2
    > (id int,name string,address struct<city:string,distrct:string>,info map<string,string>)
    > row format delimited
    > fields terminated by ','
    > collection items terminated by '|'
    > map keys terminated by ';';

eq:

以','为分隔符创建表:

内容:

1,五四运动,1919-5-4,北京

2,中共一大,1921-7-23,上海

3,遵义会议,1935-01-15,遵义

4,中共八大,1956-9-15,北京

5,中共十一届三中全会,1978-12-18,北京

6,中共十八大,2012-11-8,北京

sql 复制代码
create table event
    > (eid int,ename string,edate string,place string)
    > row format delimited fields terminated by ',';


show databases;                           #查看所有数据库
show databases like 'h.*';                #查看以h开头的数据库
use hive;                                 #切换到hive数据库下
describe hive;                       #查看hive表的信息

数据导入:

  1. 在终端输入:
bash 复制代码
hdfs dfs -put ~/gstudent2.txt /tt.db/gstudent2
  1. 在hive中输入:
    从本地导入到hive:
sql 复制代码
load data local inpath '/home/hadoop/gstudent2.txt' [overwrite] into table gstudent2;

从hdfs导入到hive:

sql 复制代码
load data inpath '/gstudent2.txt' [overwrite] into table gstudent2;  # 相当于移动,hdfs dfs -mv

导出数据:

sql 复制代码
insert overwrite local directory '/home/hadoop/daochu/event'
    > select * from event;

格式化导出数据到本地:

sql 复制代码
insert overwrite local directory '/home/hadoop/daochu/event'
    > row format delimited fields terminated by '/t'
    > select * from event;

利用hdfs命令导出:(需事先创建导出文件夹)

bash 复制代码
hdfs dfs -get /user/hive/warehouse/history.db/event ./daochu;

set hive.cli.print.header=true; 查看数据时显示表头

用于指定查询返回结果中重复的行如何处理,默认值为all返回所有匹配的行,distinct从结果集中删除重复行:

sql 复制代码
select [all/distinct] 所要查询的列 from 表名;

查看数据:

sql 复制代码
select * from tt;

1 五四运动 1919-5-4 北京

2 中共一大 1921-7-23 上海

3 遵义会议 1935-01-15 遵义

4 中共八大 1956-9-15 北京

5 中共十一届三中全会 1978-12-18 北京

6 中共十八大 2012-11-8 北京

查询事件的名称和发生地:

sql 复制代码
select ename,place from event;

查询发生在北京的事件的名称和发生时间:

sql 复制代码
select ename,edate from event where place='北京';

查询出生日期在1885年以后的人物:

sql 复制代码
select * from event where edate > '1885-1-1';

查询事件3的事件名:

sql 复制代码
select ename from event where eid=3;

查询人物名:

sql 复制代码
select pname from participant;

返回所有匹配的行 去除重复的结果:

sql 复制代码
select distinct age from stu;

找出学院名字母长度等于2的有哪些:

sql 复制代码
select * from stu where length(department) =2;

找出属于计算机与计科学院的年龄为18岁的学生信息:

sql 复制代码
select * from stu where department='jike' and age = 18;

根据学院对表stu进行分组:

sql 复制代码
select * from stu group by department;

对输出的结果进行全局排序,默认排序为升序(ASC),也可以指定为DESC降序:

根据字段进行排序:

sql 复制代码
select * from stu where class = '211' order by name;

根据字段进行降序排序:

sql 复制代码
select * from stu where class = '130211' order by name desc;

内连接:内连接是最常见的一种连接,它也被称为普通连接,其中inner可以省略:inner join == join;只有进行连接的两个表中都存在与连接条件相匹配的数据才会被留下来

inner join 查看学生的姓名,班级,课程号与成绩:

sql 复制代码
select stu.stuname,stu.class,score.coursenum,score.score from stu join score on stu.stuname=score.stuname;

等价于 隐式连接表示法:

sql 复制代码
select stu.stuname,stu.class,score.coursenum,score.score
	> from stu,score
	> where stu.stuname=score.stuname;

向表中插入内容:

sql 复制代码
insert into table 表名 values(7,'内容','内容','内容','内容');

将人物名,人物简介导出到新表pnew:

首先创建新表pnew:

sql 复制代码
create table pnew
    > (pname string,desc string)
    > row format delimited fields terminated by ' ';

将人物名,人物简介导出到新表:

sql 复制代码
insert overwrite table pnew
    > select pname,content from participant;

查表的细节(获取表的元数据描述信息):

sql 复制代码
desc formatted gstudent2;(DESCRIBE FORMATTED 表名;)

删除表:

sql 复制代码
drop table [if exists] usr1;

删除数据库和它中的表:

sql 复制代码
drop database [if exists] hive cascade;

显示当前正在使用的数据库:

sql 复制代码
select current_database();
相关推荐
烧冻鸡翅QAQ23 分钟前
考研408笔记
笔记·考研
StarPrayers.26 分钟前
卷积层(Convolutional Layer)学习笔记
人工智能·笔记·深度学习·学习·机器学习
能不能别报错1 小时前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes
无言以对,沉默不语,随你随你。1 小时前
【解决办法】GitBash不能在任意文件夹打开
经验分享·笔记·git
牛马大师兄2 小时前
STM32独立看门狗IWDG与窗口看门狗WWDG知识梳理笔记
笔记·stm32·单片机·嵌入式硬件·嵌入式·看门狗
wan5555cn2 小时前
Windows 11系统鼠标键盘被禁用问题的全面解决方案
windows·笔记·深度学习·计算机外设
zhangrelay3 小时前
ROS云课三分钟-使用动态参数重配置调试Teb导航案例-251008
笔记·学习
BingeBlog3 小时前
[01] Qt的UI框架选择和对比
开发语言·c++·笔记·qt·ui·开源软件
生物小卡拉3 小时前
R脚本——Deseq2差异表达分析--v1.0
windows·经验分享·笔记·学习·信息可视化·数据分析
工作中的程序员4 小时前
hive sql优化基础
hive·sql