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();
相关推荐
陈奕迅本讯2 分钟前
数据结构-堆排序笔记
数据结构·笔记
二进制_博客1 小时前
hadoop集群搭建
java·大数据·hadoop
明明真系叻1 小时前
第二十一周机器学习笔记:动手深度学习之——数据操作、数据预处理
笔记·深度学习·机器学习
我想回家种地1 小时前
渗透学习笔记之Windows基础
笔记·学习
佚名ano1 小时前
阻尼Newton方法-数值最优化方法-课程学习笔记-5
笔记·学习·概率论
AI视觉网奇2 小时前
动作评估学习笔记
笔记·学习
余为民同志2 小时前
mini-lsm通关笔记Week2Day5
笔记
静止了所有花开2 小时前
SpringBoot学习笔记(二)
spring boot·笔记·学习
loveLifeLoveCoding2 小时前
docker 卸载与安装
笔记
qq_q9922502773 小时前
django基于Hadoop 的国产电影数据分析与可视化
hadoop·数据分析·django