Hive的Join连接:
- HiveQL 也支持inner join、left join ,right join,full outer join(全外连接),left semi join(左半连接);、
- left semi join是一种更高效子查询的实现。
- 例如:select * from product_t left semi join order_t on product_t.pid=order_t.pid;
- 查询的是product_t中的数据在order_t_pid中出现过的(查询的结果是prduct_t的元素)
SerDe:
- 是Hive 提供用于进行序列化和但序列化的机制
- 针对不同规则的数据利用表达式进行处理
- 在处理的时候,每一个字段对应一个捕获组。
- 语句: create table log(ip string,time string,timezone way string,resource string,protocal string…) 、
- row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe’
with serdeproperties (
“input.regex”="(.) -- \[(.) (.)\] "(.) (.) (.)" (.*) -")
stored as textfile;
beeline
- 是Hive提供的一种用于远程连接Hive的方式,并提供表格来展示;
- 使用时应该先启动hiveserver2; — sh --server hiveserver2 &
- 启动方式:beeline -u jdbc:hive2://hadoop01:10000/hivedata - n root
视图 – view
- 视图是对原表的部分元素提取,将其封装到视图中;
- 物化视图:维系在磁盘中
- 虚拟视图:维系在内存中 Hive 只支持虚拟视图
- 只能查询,不能加载数据
- 创建语句:create view order_t as select oid ,num from oreders;
- 注意:视图的创建只是保存一份元数据,as 后面的查询只有在在第一次使用该视图时才会执行(类似于懒加载);创建时并不执行;
drop view order_t:删除视图;
- 注意:视图的创建只是保存一份元数据,as 后面的查询只有在在第一次使用该视图时才会执行(类似于懒加载);创建时并不执行;
索引
数据库中的索引:
- 数据库系统维护着一种叫索引的数据结构;
- 索引是为了提高查询的效率而生;实在数据本身之外;
- 一般选择具有唯一性的字段,较频繁的作为查询条件的字段;
- MySQL中添加索引的SQL :
在数据库中会自动对主键值建立索引
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLEtable_name
ADD PRIMARY KEY (column
)
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLEtable_name
ADD UNIQUE (column
)
3.添加INDEX(普通索引)
mysql>ALTER TABLEtable_name
ADD INDEX index_name (column
)
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLEtable_name
ADD FULLTEXT (column
)
5.添加多列索引
mysql>ALTER TABLEtable_name
ADD INDEX index_name (column1
,column2
,column3
)
常见的使用索引和不使用索引的sql语句
1. MySQL只对以下操作符使用索引: <、 <=、 =、 >、 >=、 between、 in和某时的like(不以%或_开头) ,具体如下:
2. SELECT sname FROM stu WHERE age+10=30; // 不会使用索引,因为所有索引列参与了计算
3. SELECT sname FROM stu WHERE LEFT(date,4) <1990; // 不会使用索引,因为使用了函数运算,原理与上面相同
4. SELECT * FROM houdunwang WHERE uname LIKE’后盾%’ // 走索引
5. SELECT * FROM houdunwang WHERE uname LIKE “%后盾%” // 不走索引
在Hive中的索引
- 目的:为了提高查询效率
- 在数据库中会自动对主键值建立索引,但是Hive因为没有主键概念,所以默认是没有索引地;
- 命令:
-
- 创建:create index stu_index on table stu(id) as
‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’
with deferred rebuild in table stu_index; - 重建索引:(索引表建立好了不会自动灯芯;需要手动更新)
alter index s_index on stu rebuilds; - 删除索引 (会把对应的表一同删除)
drop index s_index on stu;
- 创建:create index stu_index on table stu(id) as
来源:CSDN
作者:伪 码农
链接:https://blog.csdn.net/Fishman113/article/details/103621660