Hive学习笔记--基本操作2

≯℡__Kan透↙ 提交于 2020-01-28 04:51:52

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:删除视图;

索引

数据库中的索引:

  1. 数据库系统维护着一种叫索引的数据结构;
  2. 索引是为了提高查询的效率而生;实在数据本身之外;
  3. 一般选择具有唯一性的字段,较频繁的作为查询条件的字段;
  4. MySQL中添加索引的SQL :
    在数据库中会自动对主键值建立索引
    1.添加PRIMARY KEY(主键索引)
    mysql>ALTER TABLE table_name ADD PRIMARY KEY ( column )
    2.添加UNIQUE(唯一索引)
    mysql>ALTER TABLE table_name ADD UNIQUE (
    column
    )
    3.添加INDEX(普通索引)
    mysql>ALTER TABLE table_name ADD INDEX index_name ( column )
    4.添加FULLTEXT(全文索引)
    mysql>ALTER TABLE table_name ADD FULLTEXT ( column)
    5.添加多列索引
    mysql>ALTER TABLE table_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;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!