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 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
冷眼看人间恩怨11 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
清平乐的技术专栏11 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
节点。csn14 小时前
Hadoop yarn安装
大数据·hadoop·分布式
不惑_14 小时前
小白入门 · 腾讯云轻量服务器部署 Hadoop 3.3.6
服务器·hadoop·腾讯云
csding1114 小时前
写入hive metastore报问题Permission denied: user=hadoop,inode=“/user/hive”
数据仓库·hive·hadoop
NiNg_1_23415 小时前
基于Hadoop的数据清洗
大数据·hadoop·分布式
Hejjon16 小时前
SpringBoot 整合 SQLite 数据库
笔记
筒栗子19 小时前
复习打卡大数据篇——Hadoop HDFS 01
大数据·hadoop·hdfs