Hadoop之数据仓库构建-Hive
目录Hive是什么...1
hadoop是什么...1
hadoop、hive两者关系...2
hive的优缺点...2
hive的存在意义...2
hive常用命令...2
一些相关命令...2
创建表...3
创建分区partition_table.dt.3
加载数据到分区...4
删除表 droptable partition_table. 4
桶表...4
内部表与外部表:4
UDF、UDAF、UDTF:4
hive使用技巧与优化方法...4
3.1 重点参数设置... 4
3.2 MapJoin. 4
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
QA.6
自由问答时间...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.2MapJoin
http://blog.iyunv.com/liuxianbing119/article/details/8668635
3.3 数据倾斜问题原因查找与解决方法
3.4减少重复IO
一次查询,多次插入,即Multi-groupBy操作
3.5Map/Reduce参数的优化设置
FAQ
4.1 执行慢或卡死
4.2 突然报异常,重跑后正常了/重跑后不正常?
4.3 任务执行忽快忽慢,如之奈何
4.4 数据评估一个任务合理的运行时间
4.5 如何系统地完成一个hive任务的设计与实现
参考资料:
天亮教育云分享地址:http://pan.baidu.com/s/1pJJrcqJ
Csdn博客: http://blog.iyunv.com/erliang20088
技术交流群:320349384
QA
自由问答时间
版权声明:本文为博主原创文章,未经博主允许不得转载。
页:
[1]