hive纪要(下)

简介: hive纪要(下)

第七章   HiveQL:视图



Hive不支持物理视图,hive中视图只是一个逻辑结构。


Hive先执行这个视图,然后使用这个结果进行余下的查询。


作用:


1.      降低查询的负责度


2.      通过创建视图限制数据访问

Create  view    shorter_join   as
Select   *  from  people   join cart
   On  (cart.people_id=people.id)
Where   firstname=’john’;



查询语句简化为:

Select lastname  from shorter_join  where id=3;



创建视图时也能使用if  not  exists和comment子句

Create view if   not   exists shipments(time,part)
  Comment  ‘time and parts  for  shipments’
Tblproperties(‘creator’=’me’)
As select …;



删除视图:

Delete view  if   exists  shipments;


查看视图:

Show tables;

--注意,没有show   view



第八章   HiveQL:索引



Hive只有有限的索引功能。Hive中一张表的索引存储在另一张表中。


1.      提高查询速度


剪裁掉一张表的部分数据块,减少MapReduce的输入数据量。


通过explain命令可以查看某个查询语句是否用到了索引。



--创建索引

Create index   employees_index
   Ontable  employees(country)
  As  ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’

 --索引处理器

With  deferred rebuild


Idxproperties(‘creator’=’me’,’created_at’=’some_time’)

   --索引额外描述信息


In   table  employees_index_table

           --索引信息存储的表


Partitioned  by (country,name)

                --索引包含的分区


Comment ‘Employees  indexed   by  country  and  name’;


--创建内置的Bitmao索引


Create index   employees_index
   Ontable  employees(country)
  As  ‘BITMAP’

--索引处理器


With  deferred rebuild
  Idxproperties(‘creator’=’me’,’created_at’=’some_time’)

   --索引额外描述信息


In   table  employees_index_table

            --索引信息存储的表


Partitioned  by (country,name)

                   --索引包含的分区

Comment ‘Employees  indexed   by  country  and  name’;



--重建索引

Alter index   employees_index
On   table  employees
Partition(country=’US’)
Rebuild;



--显示索引

Show  formatted  index  on employees;


--删除索引

Drop index   if   exists employees_index  on  table  employees;


第10章    调优


1.使用explain查看执行计划

Hive>Explain  select sum(number)   from   onecol;


2.使用explain   extended 查看更多信息


3.限制调整


 主要是对limit的一些控制优化。

Hive.limit.optimize.enable=true

 --当开启后,使用limit会对源数据进行抽样


4.join优化

 大表放在join语句的最右边或使用/*+STREAMTABLE(s)*/显示指出大表

 小表载入内存中/*+mapjoin(d)*/

Hive>set hive.auto.convert.join=true

        --自动将小表缓存

Hive.mapjoin.smalltable.filesize=25000000

       --判断是否是小表的阀值


5.本地模式

Set  hive.exec.mode.local.auto=true


 不进行MapReduce计算


6.并行执行

特定job包含众多的阶段,有些阶段是可以并行执行的,那么job可能越快完成

Hive.exec.parallel=true



7.严格模式

Hive.mapred.mode=strict


禁止3中查询:


Ø  对于分区表,用户不允许扫描所有分区


Ø  对于使用了order by语句的查询,要求必须使用limit语句


Ø  限制笛卡尔积


8.调整mapper和reducer个数


9.JVM重用

Hadoop的默认配置通常是使用派生JVM来执行map和reduce任务的。

而启用JVM重用可以使得JVM实例在同一个job中重新使用N次。

Mapred.job.reuser.jvm.num.tasks=10


10.索引


11.动态分区调整

  开启动态分区的“严格模式”

Hive.exec.dynamic.partition.mode=strict


12.开启中间压缩

Hive.exec.compress.intermediate=true



13.开启最终输出结果压缩

Hive.exec.compress.output=true

    --开启输入结果压缩

Mapred.output.compression.codec=org.apache.hadoop.id.compress.GzipCodec

–指定压缩格式



第18章    安全和授权


Hive.security.authorization.enabled=true

   --开启授权


Hive.security.authorization.createtable.owner.grants=All

     --文件的创建者具有所有权限



--授权,给用户Edward授予创建表的权限

Hive> Grant  create  ondatabase  default  to user  Edward;


--查看权限

Hive>show   grant user Edward  on database default;


--使用revoke取消权限

Hive> revoke  create  ondatabase  default  to user  Edward;


权限列表:


All        赋予所有的权限


Alter      有修改表结构的权限


Create     有创建表的权限


Drop      有删除表或表的分区的权限


Index      有创建索引的权限


Lock       开启并发后,锁定和解锁表的权限


Select      查询表或者分区中数据的权限


Show_database    查看所有数据库的权限


Update           向表或者分区中插入或加载数据的权限


自动授权:

Hive.security.authorization.createtable.owner.grants=select,drop


设置创建表的用户自动授予对这张表的查询和删除的权限


在创建表时自动授予指定用户指定的权限:


--hive管理员admin1和Edward用户默认授予所有表的读权限,user1只有创建的权限

<property>
<name>Hive.security.authorization.createtable.owner.grants</name>
  <value>admin1,Edward:select;user1:create</value>
</property>


第19章   锁



Hive缺少update和insert类型的查询中用到的对于列、行或者查询级别的锁支持。


多用户操作时,锁和协调时非常有用的。


Hive的锁机制需要Zookeeper的支持。

Hive.zookeeper.quorum

  --配置Zookeeper集群所有机器的ip



Hive.support.concurrency=true

   --开启hive的锁机制


--查看锁

Show locks;


--对表people创建一个显示锁

Hive> lock  table   people exclusive;


--解锁


         
目录
相关文章
|
SQL 存储 缓存
hive纪要(上)
hive纪要(上)
132 0
|
7月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
196 1
|
SQL Java 大数据
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
613 1
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
158 0
|
7月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
259 0
|
SQL 存储 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
146 0
|
7月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
277 0
|
7月前
|
SQL 存储 分布式计算
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
1099 0
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
41 0
|
5月前
|
SQL 分布式计算 大数据
大数据处理平台Hive详解
【7月更文挑战第15天】Hive作为基于Hadoop的数据仓库工具,在大数据处理和分析领域发挥着重要作用。通过提供类SQL的查询语言,Hive降低了数据处理的门槛,使得具有SQL背景的开发者可以轻松地处理大规模数据。然而,Hive也存在查询延迟高、表达能力有限等缺点,需要在实际应用中根据具体场景和需求进行选择和优化。