必读:
1)SQL的书写顺序
SELECT-DISTINCT-FROM-JOIN ON-WHERE-GROUP BY-HAVING-ORDER BY-LIMIT
2)真正执行的顺序:
随着mysql版本的更新换代,其优化器也在不断升级,优化器会分析不同执行顺序产生的性能消耗不同而动态调整执行顺序。下面是经常出现的查询顺序:
FROM-ON-JOIN-WHERE-GROUP BY-HAVING-SELECT-DISTINCT-ORDER BY-LIMIT
3)外连接
外连接确定主从表:左外连(左主右从),右外连(右主左从)
外连接的结果集:主表取所有,从表取搭配。主表与从表未匹配的数据通过null来补全。
Hive总结
1什么是hive?
1.
2.优缺点
--
3.架构原理
--1.用户接口:Client
4.hive与数据库的比较
由于hive采用了类似sql的查询语言HQL(Hive query Language),因此很容易将Hive理解为数据库。其实从结构上看,hive和数据库除了类似的查询语言,再无类似之处
--1.查询语言
hive有类似sql的hql查询语言
--2.数据更新
1.hive针对数据仓库而设计,适合读多写少的场景
2.mysql的数据需要经常进行修改
--3.执行延迟
1.hive没有索引+基于mr计算,延迟性高;
2.这个低是有条件的,即数据规模小,当数据规模大到超过数据库的处理能力的时候,hive的并行计算
就能体现出优势
--4.数据规模
支持大数据规模的数据
5.tez引擎
1.‘mr引擎’:每个任务及任务之间都需要落盘
2.‘Tez引擎’:可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能。
一.HiveJDBC客户端基本操作
1.1HiveJDBC的登入与退出
方式一:使用beeline方式
访问方式:beeline -u jdbc:hive2://hadoop102:10000 -n atguigu
退出方式:!quit、!exit、ctrl+c
前提:mysql服务和hiveserver2服务一定要启动
方式二:使用hive的方式:
访问方式:hive
退出方式:quit;exit;
1.2Hive常用的交互命令
“e"不进入hive的交互窗口执行sql语句 “f”执行脚本中sql语句
1.3Hive数据类型
- 基本数据类型
Hive数据类型 | Java数据类型 | 长度 | 例子 |
---|---|---|---|
TINYINT | byte | 1byte有符号整数 | 20 |
SMALLINT | short | 2byte有符号整数 | 20 |
INT | int | 4byte有符号整数 | 20 |
BIGINT | long | 8byte有符号整数 | 20 |
BOOLEAN | boolean | 布尔类型,true或者false | TRUE FALSE |
FLOAT | float | 单精度浮点数 | 3.14159 |
DOUBLE | double | 双精度浮点数 | 3.14159 |
STRING | string | 字符系列。可以指定字符集。可以使用单引号或者双引号 | 'now is the time',"for all good men" |
TIMESTAMP | 时间类型 | ||
BINARY | 字节数组 |
- 重点关注:int,string,double,bigint
- 使用注意事项:在sql中需要指定字段的长度,而在hive中不需要,可以理解为可变参数
- 数据类型的字节数
byte | short | int | long | float | double | char |
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 4 | 8 | 2 |
其中float的取值范围比long还要大
- 集合数据类型
数据类型 | 描述 | 语法示例 |
---|---|---|
STRUCT | 和c语言中的struct类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first STRING, last STRING},那么第1个元素可以通过字段.first来引用。 | struct()例如struct<street:string,city:string> |
MAP | MAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素 | map()例如map |
ARRAY | 数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第2个元素可以通过数组名[1]进行引用。 | Array()例如array |
创建表的实例:
create
获取集合中属性的方法:
数组:使用索引的方式:字段名[index]
集合:使用key的值获取:字段名[key的值]
Struct:使用:字段.属性值
二、DDL数据定义
2.1数据库操作
2.1.1显示和查询数据库与表信息
1
2.1.2创建数据库
CREATE
实例:
create
2.1.3删除数据库
当数据库不为空时,加上
2.2表的操作
2.2.1建表语法
CREATE