不用搭集群学习大数据的网站(hue),快来感受下hive的魅力吧
废话不多说先上网址:http://demo.gethue.com/hue/
(谷歌浏览器打不开换IE浏览器试一试)
用户名:demo
密码:demo
进去就可以操作随时可以学习大数据了。
进去hue界面后操作步骤
大家在里面可以随时写自己的HIVE了,一般的HIVE会转换成MapReduce程序跑出数据。
虽然说这个界面简单易操作,适合入门,但是要真正的学习大数据不仅要自己搭载集群还要懂得背后的原理和优化方法。
个人总结学习大数据组件hive三个步骤:
1、如何使用hive
首先要明白什么是HIVE,HIVE是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。它是hadoop的一个组件,在下图当中可以看到hive所处的位置。
其次为什么用hadoop中的hive,这里简单说一下,因为现在是大数据时代,移动互联网每天产生的数据可以用pb级别来衡量,传统的关系型数据根本不能满足其存储和计算需求。
大数据架构图
最后说说如何使用hive,其实hive支持大部分的sql,只是有细微的差异,背后的原理也和传统的数据库也不一样,差异如下图可以看出。
hive和关系数据库的对比
建表:
CREATE TABLE `customers`( `custid` int, `name` string, `email_preferences` struct>, `addresses` map>, `orders` array>>>) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' LOCATION 'hdfs://ip-172-31-19-94.us-west-2.compute.internal:8020/user/hive/warehouse/customers' TBLPROPERTIES ( 'COLUMN_STATS_ACCURATE'='false', 'last_modified_by'='demo', 'last_modified_time'='1549274028', 'numFiles'='1', 'numRows'='-1', 'rawDataSize'='-1', 'totalSize'='15812', 'transient_lastDdlTime'='1549274028') ca
查询:select count(0) from customers
hive查询
这里只是简单的操作,但是你别认为就这么简单,真正生产的hive是逻辑比较复杂的,代码1000行的也很常见。
业务逻辑比较复杂的hivesql
2、hive的原理
hadoop的两大利器就是海量计算(MapReduce)和海量存储(hdfs),那hive就是转化成MapReduce来操作hdfs文件。
hive转化为MapReduce主要由以下几个过程组成:
inputfomated 输入数据
map 映射数据
shuffle 数据混洗阶段
reduce 数据规约
MapReduce执行流程
MapReduce原理
3、hive的优化
知道了hive的基本操作和原理之后我们就要对hIve进行优化了,因为优化不仅可以使集群的资源的到充分利用还可以是数据仓库尽快出数据,进而报表等其他应用尽早的出数据。
数据仓库架构
本期先简单的说说有哪些优化的点,下一其专门写一下优化方法。
优化主要由两个方向组成:配置优化和sql语句优化
配置优化
(1)列裁剪,就是把不要的列不要select出来
(2)分区裁剪,类似列裁剪,把需要的分区where出来
(3)MAP JOIN操作,合并小文件,加并行参数等等
语句优化
(1)无效ID在关联时的数据倾斜问题,打散空值
(2)GROUP BY替代COUNT(DISTINCT)达到优化效果
优化时,把hive sql当做mapreduce程序来读,会有意想不到的惊喜。理解hadoop的核心能力,是hive优化的根本。
现在的这个时代,hive已经是包括分析师,仓库工程师,大数据开发工程师,挖掘工程师一项必备的技能,大家快快一起学习共同进步。