版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级软件人才实作培训专家!Hadoop深入浅出讲师:吴超博客:QQ:3774 86624北京传智播客教育 高级软件人才实作培训专家!课程安排l Hive是什么?其体系结构简介*l Hive的安装与管理*l HiveQL数据类型,表以及表的操作*l HiveQL查询数据*l Hive的Java客户端*加深拓展l Hive的自定义函数UDF*高级软件人才实作培训专家!什么是Hive(一)l Hive 是建立在 Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在Ha
2、doop中的大规模数据的机制。Hive 定义了简单的类 SQL查询语言,称为 QL ,它允许熟悉 SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的 mapper和reducer来处理内建的 mapper 和 reducer无法完成的复杂的分析工作。高级软件人才实作培训专家!什么是Hive(二)l Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。l Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。高级软件人才实作培训专家!Hive的系统架
3、构 用户接口,包括 CLI, JDBC/ODBC,WebUI 元数据存储,通常是存储在关系数据库如 mysql, derby 中 解释器、编译器、优化器、执行器 Hadoop:用 HDFS 进行存储, 利用 MapReduce 进行计算高级软件人才实作培训专家!Hive的系统架构用户接口主要有三个:CLI,JDBC/ODBC和 WebUICLI,即Shell命令行JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似WebGUI是通过浏览器访问 HiveHive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括
4、表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS 中,并在随后有 MapReduce 调用执行Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)l1.2.3.lll高级软件人才实作培训专家!Hive的安装在Hadoop0上修改/etc/profile文件。#vi /etc/profile增加export
5、 HIVE_HOME=/usr/local/hive修改exportPATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin保存退出#source /etc/profilel 把hive-0.9.0.tar.gz复制到/usr/locall 解压hive-0.9.0.tar.gz与重命名#cd /usr/local#tar -zxvf hive-0.9.0.tar.gz #mv hive-0.9.0 hive高级软件人才实作培训专家!Hive的安装1.修改hadoop的hadoop-env.sh(否则启动hive汇报找不到类的错误)ex
6、port HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin2.修改$HIVE_HOME/bin的hive-config.sh,增加以下三行export JAVA_HOME=/usr/local/jdkexport HIVE_HOME=/usr/local/hiveexport HADOOP_HOME=/usr/local/hadoopl cd$HIVE_HOMEl mvhive-env.sh.templatehive-env.shl mvhive-default.xml.templatehive-site.xml高
7、级软件人才实作培训专家!Hive的安装l 启动#hivehiveshow tables;hivecreate table test(id int,name string); hivequit;观察:#hadoop fs -ls /user/hive参数:hive.metastore.warehouse.dir高级软件人才实作培训专家!Hive的metastorel metastore是hive元数据的集中存放地。metastore默认使用内嵌的derby数据库作为存储引擎l Derby引擎的缺点:一次只能打开一个会话l 使用Mysql作为外置存储引擎,多用户同时访问高级软件人才实作培训专家!H
8、ive的安装l 配置MySQL的metastorel 1.上传mysql-connector-java-5.1.10.jar到$HIVE_HOME/libl 2.登录MYSQL,创建数据库hivel #mysql -uroot -padminl mysqlcreate database hive;l mysqlGRANT all ON hive.* TO root% IDENTIFIED BY admin;l mysqlflush privileges;l mysqlset global binlog_format=MIXED;l 3.把mysql的数据库字符类型改为latin1高级软件人才实
9、作培训专家!修改$HIVE_HOME/conf/hive-site.xmljavax.jdo.option.ConnectionURLjdbc:mysql:/hadoop0:3306/hive?createDatabaseIfNotExist=truejavax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.Driverjavax.jdo.option.ConnectionUserNamerootjavax.jdo.option.ConnectionPasswordadmin高级软件人才实作培训专家!Hive运行模式l Hive的运行模式即任务的执
10、行环境l 分为本地与集群两种我们可以通过mapred.job.tracker 来指明设置方式:hive SET mapred.job.tracker=local高级软件人才实作培训专家!l 1、hive 命令行模式,直接输入#/hive/bin/hive的执行程序,或者输入 #hive -service clil 2、 hive web界面的 (端9999) 启动方式#hive -service hwi &用于通过浏览器来访问hive http:/hadoop0:9999/hwi/l 3、 hive 远程服务 (端10000) 启动方式#hive -service hiveserver &Hi
11、ve的启动方式高级软件人才实作培训专家!Hive与传统数据库查询语言HiveQLSQL数据存储位置HDFSRaw Device or 本地FS数据格式用户定义系统决定数据更新不支持支持索引新版本有,但弱有执行MapReduceExecutor执行延迟高低可扩展性高低数据规模大小高级软件人才实作培训专家!Hive的数据类型l 基本数据类型tinyint/smallint/int/bigint float/doublebooleanstring复杂数据类型Array/Map/Struct 没有date/datetime高级软件人才实作培训专家!Hive的数据存储l Hive的数据存储基于Hadoo
12、p HDFSl Hive没有专门的数据存储格式l 存储结构主要包括:数据库、文件、表、视图l Hive默认可以直接加载文本文件(TextFile),还支持sequence filel 创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据高级软件人才实作培训专家!Hive的数据模型-数据库l 类似传统数据库的DataBasel 默认数据库default使用#hive命令后,不使用hiveuse ,系统默认的数据库。可以显式使用hive use default;创建一个新库hive create database test_dw;高级软件人才实作培训专家!Hive的数据模型-表l
13、Table 内部表l Partition分区表l External Table 外部表l BucketTable 桶表高级软件人才实作培训专家!Hive的数据模型-内部表l 与数据库中的 Table 在概念上是类似l 每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 test,它在 HDFS 中的路径为:/ warehouse/test。 warehouse是在 hive-site.xml 中由$hive.metastore.warehouse.dir 指定的数据仓库的目录l 所有的 Table 数据(不包括 External Table)都保存在这个目录中。l 删
14、除表时,元数据与数据都会被删除高级软件人才实作培训专家!Hive的数据模型-内部表l 创建数据文件inner_table.datl 创建表hivecreate table inner_table (key string);l 加载数据hiveload data local inpath /root/inner_table.dat into table inner_table;l 查看数据select * from inner_tableselect count(*) from inner_tablel 删除表 drop table inner_table高级软件人才实作培训专家!Hive的数据
15、模型-分区表l Partition 对应于数据库的 Partition 列的密集索引l 在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中例如:test表中包含 date 和 city 两个 Partition,则对应于date=20130201, city = bj 的 HDFS 子目录为:/warehouse/test/date=20130201/city=bj对应于date=20130202, city=sh 的HDFS 子目录为;/warehouse/test/date=20130202/city=sh高级软件
16、人才实作培训专家!Hive的数据模型-分区表TABLE tmp_table #表名CREATE(title# 字段名称 字段类型double, bigint, bigintstring,minimum_bid quantity have_invoice)COMMENT 注释:XXX #表注释PARTITIONED BY(pt STRING) #分区表字段(如果你文件非常之大的话,采用分区表可以快过滤出按分区字段划分的数据)ROW FORMAT DELIMITED# 字段是用什么分割开的FIELDS TERMINATED BY 001STORED AS SEQUENCEFILE; #用哪种方式存
17、储数据,SEQUENCEFILE是hadoop自带的文件压缩格式一些相关命令TABLES; # 查看所有的表TABLES *TMP*; #支持模糊查询SHOW SHOWPARTITIONS TMP_TABLE; #查看表有哪些分区SHOWDESCRIBE TMP_TABLE; #查看表结构高级软件人才实作培训专家!Hive的数据模型-分区表l 创建数据文件partition_table.datl 创建表create table partition_table(rectime string,msisdn string) partitioned by(daytime string,city str
18、ing) row format delimited fields terminated by t stored as TEXTFILE;l 加载数据到分区load data local inpath /home/partition_table.dat into table partition_table partition (daytime=2013-02-01,city=bj);l 查看数据select * from partition_tableselect count(*) from partition_table 删除表 drop table partition_table高级软件人才
19、实作培训专家!Hive的数据模型-分区表l alter table partition_table add partition (daytime=2013- 02-04,city=bj);通过load data 加载数据l alter table partition_table drop partition (daytime=2013- 02-04,city=bj)元数据,数据文件删除,但目录daytime=2013-02-04还在高级软件人才实作培训专家!Hive的数据模型桶表桶表是对数据进行哈希取值,然后放到不同文件中存储。创建表create table bucket_table(id s
20、tring) clustered by(id) into 4 buckets;ll加载数据set hive.enforce.bucketing = true;insert into table bucket_table select name from stu; insert overwrite table bucket_table select name from stu;数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。ll抽样查询select * from bucket_table tablesample(bucket 1 out of 4 on id)
21、;l高级软件人才实作培训专家!Hive的数据模型-外部表指向已经在 HDFS 中存在的数据,可以创建 Partition它和 内部表 在元数据的组织上是相同的,而实际数据的存储则有较大的差异内部表 的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除外部表 只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个 外部表 时,仅删除该链接llll高级软件人才实作培训专家!Hive的数据模型-外部
22、表CREATE EXTERNAL TABLE page_view ( viewTime INT,userid BIGINT, page_url STRING,referrer_url STRING,ip STRING COMMENTIP Address of the User,country STRING COMMENTcountry of origination)COMMENTThis is the staging page view tableROW FORMAT DELIMITEDFIELDS TERMINATEDBY 44 LINESTERMINATEDBY 12STOREDAS TE
23、XTFILELOCATIONhdfs:/centos:9000/user/data/staging/page_view;高级软件人才实作培训专家!Hive的数据模型-外部表l 创建数据文件external_table.datl 创建表hivecreate external table external_table1 (key string) ROW FORMAT DELIMITED FIELDS TERMINATED BY t location /home/external;在HDFS创建目录/home/external#hadoop fs -put /home/external_table.
24、dat /home/externall 加载数据LOAD DATA INPATH /home/external_table1.dat INTO TABLE external_table1;l 查看数据select * from external_tableselect count(*) from external_tablel 删除表drop table external_table高级软件人才实作培训专家!视图操作l 视图的创建CREATE VIEW v1 AS select * from t1;高级软件人才实作培训专家!表的操作l 表的修改alter table target_tab ad
25、d columns (cols,string)l 表的删除drop table高级软件人才实作培训专家!导入数据 当数据被加载至表中时,不会对数据进行任何转换。Load 操作只是将数据复制/移动至 Hive 表对应的位置。LOAD DATA LOCAL INPATH filepath OVERWRITEINTO TABLE tablenamePARTITION (partcol1=val1, partcol2=val2 .) 把一个Hive表导入到另一个已建Hive表INSERT OVERWRITE TABLE tablename PARTITION (partcol1=val1, partc
26、ol2=val2 .) select_statement FROM from_statement CTASCREATE EXTERNAL TABLE IF NOT EXISTS table_name(col_name data_type, .) AS SELECT 例:create table new_external_test asselect * from external_table1;高级软件人才实作培训专家!查询select SELECT ALL | DISTINCTselect_expr, select_expr, . FROM table_reference WHERE wher
27、e_condition GROUP BY col_list CLUSTER BY col_list |DISTRIBUTE BY 指定分发器(Partitioner),多Reducer可用DISTRIBUTE BY col_list SORT BYcol_list | ORDER BY col_list LIMIT number高级软件人才实作培训专家!查询 基于Partition的查询一般 SELECT 查询是全表扫描。但如果是分区表,查询就可以利用分区剪枝(input pruning)的特性,类似“分区索引“”,只扫描一个表中它关心的那一部分。Hive 当前的实现是,只有分区断言(Part
28、itioned by)出现在离 FROM 子句最近的那个WHERE 子句中,才会启用分区剪枝。例如,如果 page_views 表(按天分区)使用 date 列分区,以下语句只会读取分区为2008-03-01的数据。SELECT page_views.*FROM page_viewsWHERE page_views.date = 2013-03-01 AND page_views.date create table acinfo (name string,acip string)row format delimited fields terminated by t stored as TEXT
29、FILE;hive load data local inpath /home/acinfo/ac.dat into table acinfo;l 内连接select ,a.* from dim_ac a join acinfo b on (a.ac=b.acip) limit 10;l 左外连接select ,a.* from dim_ac a left outer join acinfo b on a.ac=b.acip limit 10;表连接高级软件人才实作培训专家!Java客户端l Hive远程服务启动#hive -service hiveserver /dev/null 2/dev/null &l JAVA客户端相关代码Class.forName(org.apache.hadoop.hive.jdbc.HiveDriver); Connection con = DriverManager.getConnection(jdbc:hive:/192.1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年马鞍山UV光固化材料项目可行性研究报告
- 2026年生态文明知识竞赛题库附答案(共160题)
- 粉条粉丝项目可行性研究报告
- 球型改性石墨项目可行性研究报告
- 自闭症儿童心理健康教育案例
- 物流行业发展现状及趋势分析研究
- 市场营销策划方案实例分析
- 人工智能算法在图像处理中的应用
- 生物科技产业发展趋势解读
- 数字政府建设中的信息共享平台构建
- 乡镇禁毒举报奖惩制度
- 2026年安徽新闻出版职业技术学院单招综合素质考试题库及一套答案详解
- DLT 5035-2016 发电厂供暖通风与空气调节设计规范
- 部编人教版九年级历史下册全册知识点总结
- 新版北师大版小学3三年级数学下册全册教案完整(新教材)
- 矿井水综合利用分析及前景展望
- 室外消防及给水管道
- 云数据中心柴油发电机组施工组织设计方案
- T∕CVMA 76-2021 犬猫氧气疗法技术规范
- 锚杆静压桩钢管桩加固施工方案
- 基于PLC的门禁系统的设计
评论
0/150
提交评论