Hive基础笔记

安装Hive并连接MySQL

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

启动/退出Hive

启动并登陆mysql shell

service mysql start	# 启动mysql服务
mysql -u root -p  # 登陆shell界面

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

启动hive

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

cd /usr/local/hive
./bin/hive

退出Hive交互式执行环境

exit;

相关操作

创建数据库:

create database ykb;

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

create database tt
    > location '/tt.db';

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

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

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

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,北京

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. 在终端输入:
hdfs dfs -put ~/gstudent2.txt /tt.db/gstudent2
  1. 在hive中输入:
    从本地导入到hive:
load data local inpath '/home/hadoop/gstudent2.txt' [overwrite] into table gstudent2;

从hdfs导入到hive:

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

导出数据:

insert overwrite local directory '/home/hadoop/daochu/event'
    > select * from event;

格式化导出数据到本地:

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

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

hdfs dfs -get /user/hive/warehouse/history.db/event ./daochu;

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

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

select [all/distinct] 所要查询的列 from 表名;

查看数据:

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 北京

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

select ename,place from event;

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

select ename,edate from event where place='北京';

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

select * from event where edate > '1885-1-1';

查询事件3的事件名:

select ename from event where eid=3;

查询人物名:

select pname from participant;

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

select distinct age from stu;

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

select * from stu where length(department) =2;

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

select * from stu where department=‘jike’ and age = 18;

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

select * from stu group by department;

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

select * from stu where class = '211' order by name;

根据字段进行降序排序:

select * from stu where class = '130211order by name desc;

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

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

select stu.stuname,stu.class,score.coursenum,score.score from stu join score on stu.stuname=score.stuname;

等价于 隐式连接表示法:

select stu.stuname,stu.class,score.coursenum,score.score
	> from stu,score
	> where stu.stuname=score.stuname;

向表中插入内容:

insert into table 表名 values(7,'内容','内容','内容','内容');

将人物名,人物简介导出到新表pnew:
首先创建新表pnew:

create table pnew
    > (pname string,desc string)
    > row format delimited fields terminated by ' ';

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

insert overwrite table pnew
    > select pname,content from participant;

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

desc formatted gstudent2;DESCRIBE FORMATTED 表名;

删除表:

drop table [if exists] usr1;

删除数据库和它中的表:

drop database [if exists] hive cascade;

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

select current_database();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇咔咔哇咔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值