天亮高端IT教育品牌

关注微信交流群

课堂一角


Hadoop之数据仓库构建-Hive

天亮教育

目录

Hive是什么... 1

hadoop是什么... 1

hadoop、hive两者关系... 2

hive的优缺点... 2

hive的存在意义... 2

hive常用命令... 2

一些相关命令... 2

创建表... 3

创建分区partition_table.dt3

加载数据到分区... 4

删除表 drop table partition_table4

桶表... 4

内部表与外部表:4

UDF、UDAF、UDTF:4

hive使用技巧与优化方法... 4

3.1  重点参数设置... 4

3.2  MapJoin4

3.3  数据倾斜问题原因查找与解决方法... 5

3.4  减少重复IO.. 5

3.5  Map/Reduce参数的优化设置... 5

FAQ.. 5

4.1 执行慢或卡死... 5

4.2 突然报异常,重跑后正常了/重跑后不正常?5

4.3 任务执行忽快忽慢,如之奈何... 5

4.4 数据评估一个任务合理的运行时间... 5

4.5 如何系统地完成一个hive任务的设计与实现... 5

参考资料:... 5

QA6

自由问答时间... 6

 

Hive是什么

hadoop是什么

分布式存储系统(HDFS)  

并行计算框架(Map/Reduce) 

hadoop、hive两者关系

   前者为Core,后者为Shell

   前者为驱体,后者为形状

hive的优缺点

    过度封装,易于使用,但难理其所以然,如遇异常情况经常使初学者或欠经验者卡壳。

开放出来的API不够丰富灵活,个性化优化偶尔会比较困难,必要时要写原生态的MR。

存在很多版本上的bug,有一定的不稳定性,升级成本较高。而原生态的MR要小很多。

hive的存在意义

易于构建数据仓库:承载大数据量、易扩展、接口统一、易于维护

BI等轻开发等人员的需要

降低大数据应用研发门槛

Hadoop生态圈的重要一环

hive常用命令

一些相关命令

SHOW TABLES; #查看所有的表

SHOW TABLES '*TMP*'; #支持模糊查询

SHOWPARTITIONS TMP_TABLE; #查看表有哪些分区

DESCRIBE TMP_TABLE; #查看表结构

创建表

CREATE TABLE tmp_table #表名

(

title   string, #字段名称 字段类型

minimum_bid     double,

quantity        bigint,

have_invoice    bigint

)COMMENT'注释:XXX' #表注释

 PARTITIONED BY(pt STRING) #分区表字段(如果你文件非常之大的话,采用分区表可以快过滤出按分区字段划分的数据)

 ROW FORMAT DELIMITED

   FIELDSTERMINATED BY '/001'   # 字段是用什么分割开的

STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'; #用哪种方式存储数据

创建分区partition_table.dt

创建表

createtable partition_table(c1 string,c2 string)

 partitioned by(daytime string,city string)

row formatdelimited fields terminated by '/t'

stored asTEXTFILE;

加载数据到分区

load data local inpath '/home/partition_table.dat'into table

 partition_tablepartition(daytime='2013-02-01',city='bj');

删除表 drop table partition_table

桶表

    桶表是对数据进行哈希取值,然后放到不同文件中存储。

创建表create table bucket_table(id string) clustered by(id) into 4buckets; 加载数据set hive.enforce.bucketing = true;

数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。

T1, f1,

T2 f2

内部表与外部表:

UDF、UDAF、UDTF:

hive使用技巧与优化方法

3.1  重点参数设置

MR:Map(combiner),Reduce(copy,sort,reduce)

set hive.map.aggr=true;

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

set hive.exec.parallel=true;

set hive.exec.parallel.thread.number=4;

set hive.groupby.skewindata=false;

set mapreduce.reduce.shuffle.memory.limit.percent=0.01;

set mapreduce.reduce.shuffle.input.buffer.percent=0.01;

set mapred.reduce.copy.backoff=20;

set io.sort.mb=200;

set mapred.max.split.size=536870912;

set mapred.child.java.opts=-Xms512m -Xmx5120m;

set mapred.job.map.memory.mb=3072;

set mapred.job.reduce.memory.mb=5120;

set mapred.reduce.tasks.speculative.execution=true;

set mapred.map.tasks.speculative.execution=true;

set hive.mapred.reduce.tasks.speculative.execution=true;

set mapred.reduce.tasks=1500;

set mapred.reduce.slowstart.completed.maps=0.95;

3.2  MapJoin

  http://blog.csdn.net/liuxianbing119/article/details/8668635

3.3 数据倾斜问题原因查找与解决方法

3.4  减少重复IO

     一次查询,多次插入,即Multi-groupBy操作

3.5  Map/Reduce参数的优化设置

 

FAQ

      4.1 执行慢或卡死

      4.2 突然报异常,重跑后正常了/重跑后不正常?

      4.3 任务执行忽快忽慢,如之奈何

      4.4 数据评估一个任务合理的运行时间

      4.5 如何系统地完成一个hive任务的设计与实现         

 

参考资料:

  天亮教育云分享地址:http://pan.baidu.com/s/1pJJrcqJ

  Csdn博客: http://blog.csdn.net/erliang20088

  技术交流群:320349384

 

QA

自由问答时间