Hive 题

作者: 博弈史密斯 | 来源:发表于2018-05-17 18:08 被阅读0次
Hive的主要作用是什么?
Hive是基于hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并且提供sql查询。相当于mapreduce的客户端
配置hive-env.sh都涉及到哪些属性?
1.添加JAVA_HOME路径     JAVA_HOME=/opt/modules/jdk1.7.0_67
2.添加HADOOP_HOME路径  HADOOP_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6/
3.添加HIVE_COF路径   export HIVE_CONF_DIR=/opt/modules/hive-0.13.1-cdh5.3.6/conf
配置hive-site.xml都修改了哪些属性,请写出属性名称并解释该属性。
1.连接数据库的uRL
2.数据库驱动名
3.数据库账户
4.数据库密码
Hive的两个重要参数是什么?
1.hive -e  ‘’  从命令行执行指定的HQL
2.hive -f  *.hql  执行hive脚本命令
Hive几种排序的特点
1.order by 全局排序
2.sort by  非全局排序
3.distribute by hash散列分区,常和sort by同时使用。即分区又排序,需要设置mapreduce.job.reduces的个数
4.cluster by 当distribute by 和sort by的字段相同时,等同于cluster by.可以看做特殊的distribute + sort
Sqoop如何导入数据,如何导出数据?
 1.将mysql数据导入到hive中。
        bin/sqoop import \
        --jdbc:mysql//hadoop102:3306/company \
    --username root
    --password 123456
        --table staff
    --terminated by '\t'
    --m 1

  2.用sqoop将hive中的数据导出到hdfs
       bin/sqoop export \
       --connect jdbc:mysql://hadoop102/test\
       --username root \
       --password 123456 \
       --table employee \
       --export-dir /user/hadoop/emp/
hive表关联查询,如何解决数据倾斜的问题?
倾斜原因:

map输出数据按key Hash的分配到reduce中,由于key分布不均匀、业务数据本身的特、建表时考虑不周、等原因造成的reduce 上的数据量差异过大。

1)、key分布不均匀;

2)、业务数据本身的特性;

3)、建表时考虑不周;

4)、某些SQL语句本身就有数据倾斜;

如何避免:对于key为空产生的数据倾斜,可以对其赋予一个随机值。

解决方案

1>.参数调节:

hive.map.aggr = true

hive.groupby.skewindata=true

有数据倾斜的时候进行负载均衡,当选项设定位true,生成的查询计划会有两个MR Job。第一个MR Job中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MR Job再根据预处理的数据结果按照Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个Reduce中),最后完成最终的聚合操作。

2>.SQL 语句调节:

1)、选用join key分布最均匀的表作为驱动表。做好列裁剪和filter操作,以达到两表做join 的时候,数据量相对变小的效果。
从左到右表的大小依次增大

2)、大小表Join:

使用map join让小的维度表(1000 条以下的记录条数)先进内存。在map端完成reduce.
set hive.auto.convert.join = true 表示开启map端优化

4)、大表Join大表:

把空值的key变成一个字符串加上随机数,把倾斜的数据分到不同的reduce上,由于null 值关联不上,处理后并不影响最终结果。

5)、count distinct大量相同特殊值:

count distinct 时,将值为空的情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在最后结果中加1。如果还有其他计算,需要进行group by,可以先将值为空的记录单独处理,再和其他计算结果进行union。
Hive文件压缩格式有哪些?压缩效率如何
开启压缩
set hive.exec.compress.output=true; 
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set mapred.output.compression.type=BLOCK;

TextFile(压缩方式Bzip2,Gzip压缩后不支持split)
SequenceFile-<key,value> (NONE,RECORD,BLOCK!。Record)
RCFile(存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点)
ORCFile

https://blog.csdn.net/wf1982/article/details/7988566

Hive的分组排序(row_number()),组内TopN

select * from(

select g_field,
pv,
row_number() over(partition by g_field order by pv desc) as rn

)where rn <=3;
Hive解析hql转化为MR的执行过程

hive自定义函数
1.写一个类继承(org.apache.hadoop.hive.ql.)UDF
public class IpToNum extends UDF {

      public long evaluate(String ip) {
          String[] nums = ip.split("\\.");
          return Long.parseLong(nums[3]) + Long.parseLong(nums[2]) * 256
             + Long.parseLong(nums[1]) * 65536 + Long.parseLong(nums[0]) * 16777216;
      }

    }
2.打jar包,提交hive服务器
3.创建函数分为临时函数和永久函数
永久函数,可以制定库
create function test.iptonum as 'com.liam8.hive.IpToNum' using jar 'hdfs:///user/hadoop/hiveUDF/udfs-0.1.jar'
临时函数
create temporary function iptonum as 'com.liam8.hive.IpToNum' using jar 'hdfs:///user/hadoop/hiveUDF/udfs-0.1.jar'
4.使用
select iptonum('127.0.0.1');

hive有哪些保存元数据的方式,有什么特点
1、Single User Mode:
默认安装hive,hive是使用derby内存数据库保存hive的元数据,这样是不可以并发调用hive的,
这种模式时hive默认的存储模式,。
2、Multi User Mode:
通过网络连接到一个数据库中,是最经常使用到的模式。假设使用本机mysql服务器存储元数据。这种存储 
方式需要在本地运行一个mysql服务器,并作如下配置(需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下 
)。
3、Remote Server Mode:
在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据 
库。

相关文章

  • Hive 题

    Hive的主要作用是什么? 配置hive-env.sh都涉及到哪些属性? 配置hive-site.xml都修改了哪...

  • 数据仓库Hive

    Hive产生背景 Hive概述 HIve体系架构 Hive部署架构 Hive和RDBMS区别 Hive部署以及快速...

  • 数据查询-Hive基础

    outline 什么是Hive 为什么需要Hive Hive的架构 Hive的常用操作 什么是Hive Hive由...

  • 大数据知识 | hive初识

    hive简介 hive架构 hive是什么 官网这样说:https://hive.apache.org/ hive...

  • Hive | Hive 安装详解

    一、Hive 介绍 二、准备工作 三、Hive下载 四、Hive 安装 五、Hive 启动 一、Hive 介绍 H...

  • Hive日常使用

    hive 创建表: hive 执行: =========================hive 调用Python...

  • Hive常用的几种交互操作

    查看hive下的交互命令方式 -help(hive 外) 命令:bin/hive -helpusage: hive...

  • 【Hive】

    Hive的安装 Hive官网地址 http://hive.apache.org/[http://hive.apac...

  • Hive进阶

    hive配置,命令 hive查询显示列名 hive默认分隔符 \001 hive命令行中查看当前hive环境变量 ...

  • Hive 入门

    Hive官网 Hive概述 Hive 的底层执行引擎有 :MapReduce,Tez,Spark- Hive on...

网友评论

      本文标题:Hive 题

      本文链接:https://www.haomeiwen.com/subject/wakidftx.html