当前位置: 首页 > article >正文

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();

http://www.kler.cn/a/407489.html

相关文章:

  • Arcpy 多线程批量重采样脚本
  • Git 提交的相对引用
  • Halo 正式开源: 使用可穿戴设备进行开源健康追踪
  • ChatClient:探索与AI模型通信的Fluent API
  • 飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
  • MySQL数据库-索引的介绍和使用
  • 【数据结构-队列】力扣232. 用栈实现队列
  • 洛谷 P1722 矩阵 II C语言 记忆化搜索
  • 对比学习——moco
  • Android 工厂设计模式的使用:咖啡机,可以做拿铁,可以做美式等等。
  • SCTransNet验证测试
  • 解决报错:rror: error:0308010C:digital envelope routines::unsupported
  • 利用软件实现发票的批量查验,并自动截图保存 91发票查验助手
  • 【C++】关于指针Free和链表循环释放的问题
  • websocket消息的实现
  • 【公开笔记】小白学习vue3完整版
  • 智能体来了:构建用于具有结构化输出的内容审核的智能 AI Agent 智能体
  • 【Isaac Sim】加载自带模型或示例时报 Isaac Sim is not responding
  • 联想ThinkServer服务器主要硬件驱动下载
  • 【单片机基础】如何选择合适的低功耗单片机
  • YOLOv11融合[NeurlS2022]递归门控卷积gnconv模块及相关改进思路
  • 10 —— Webpack打包模式
  • Linux使用经验记录
  • 韦东山hal库 使用光敏传感器控制蜂鸣器
  • GoZero对接GPT接口的设计与实现:问题分析与解决
  • 深入探索:JavaScript中实现乱序函数的艺术