版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、什么是Hive(一),Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。,什么是Hive(二),Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。 Hiv
2、e的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。,Hive的系统架构,用户接口,包括 CLI,JDBC/ODBC,WebUI 元数据存储,通常是存储在关系数据库如 mysql, derby 中 解释器、编译器、优化器、执行器 Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算,Hive的系统架构,用户接口主要有三个:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 WebGUI是通过浏览器访问 H
3、ive Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务),Hive的安装,启动 #hi
4、ve hiveshow tables; hivecreate table test(id int,name string); hivequit;,Hive的metastore,metastore是hive元数据的集中存放地。metastore默认使用内嵌的derby数据库作为存储引擎 Derby引擎的缺点:一次只能打开一个会话 使用Mysql作为外置存储引擎,多用户同时访问,Hive运行模式,Hive的运行模式即任务的执行环境 分为本地与集群两种 我们可以通过mapred.job.tracker 来指明 设置方式: hive SET mapred.job.tracker=local;,Hive
5、的启动方式,1、hive 命令行模式,直接输入#/hive/bin/hive的执行程序,或者输入 #hive -service cli 2、 hive web界面的 (端口号9999) 启动方式 #hive -service hwi 创建一个新库 hive create database test_dw;,Hive的数据模型-表,Table 内部表 Partition 分区表 External Table 外部表 Bucket Table 桶表,Hive的数据模型-内部表,与数据库中的 Table 在概念上是类似 每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 t
6、est,它在 HDFS 中的路径为:/ warehouse/test。 warehouse是在 hive-site.xml 中由 $hive.metastore.warehouse.dir 指定的数据仓库的目录 所有的 Table 数据(不包括 External Table)都保存在这个目录中。 删除表时,元数据与数据都会被删除,Hive的数据模型-内部表,创建数据文件inner_table.dat 创建表 hivecreate table inner_table (key string); 加载数据 hiveload data local inpath /root/inner_table.d
7、at into table inner_table; 查看数据 select * from inner_table select count(*) from inner_table 删除表 drop table inner_table,Hive的数据模型-分区表,Partition 对应于数据库的 Partition 列的密集索引 在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中 例如:test表中包含 date 和 city 两个 Partition, 则对应于date=20130201, city = bj 的
8、HDFS 子目录为: /warehouse/test/date=20130201/city=bj 对应于date=20130202, city=sh 的HDFS 子目录为; /warehouse/test/date=20130202/city=sh,Hive的数据模型-分区表,CREATE TABLE tmp_table #表名 ( title string, # 字段名称 字段类型 minimum_bid double, quantity bigint, have_invoice bigint )COMMENT 注释:XXX #表注释 PARTITIONED BY(pt STRING) #分
9、区表字段(如果你文件非常之大的话,采用分区表可以快过滤出按分区字段划分的数据) ROW FORMAT DELIMITED FIELDS TERMINATED BY 001 # 字段是用什么分割开的 STORED AS SEQUENCEFILE; #用哪种方式存储数据,SEQUENCEFILE是hadoop自带的文件压缩格式,一些相关命令 SHOW TABLES; # 查看所有的表 SHOW TABLES *TMP*; #支持模糊查询 SHOW PARTITIONS TMP_TABLE; #查看表有哪些分区 DESCRIBE TMP_TABLE; #查看表结构,Hive的数据模型-分区表,创建数
10、据文件partition_table.dat 创建表 create table partition_table(rectime string,msisdn string) partitioned by(daytime string,city string) row format delimited fields terminated by t stored as TEXTFILE; 加载数据到分区 load data local inpath /home/partition_table.dat into table partition_table partition (daytime=2013
11、-02-01,city=bj); 查看数据 select * from partition_table select count(*) from partition_table 删除表 drop table partition_table,Hive的数据模型-分区表,alter table partition_table add partition (daytime=2013-02-04,city=bj); 通过load data 加载数据 alter table partition_table drop partition (daytime=2013-02-04,city=bj) 元数据,数
12、据文件删除,但目录daytime=2013-02-04还在,Hive的数据模型桶表,桶表是对数据进行哈希取值,然后放到不同文件中存储。 创建表 create table bucket_table(id string) clustered by(id) into 4 buckets; 加载数据 set hive.enforce.bucketing = true; insert into table bucket_table select name from stu; insert overwrite table bucket_table select name from stu; 数据加载到桶表
13、时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。 抽样查询 select * from bucket_table tablesample(bucket 1 out of 4 on id);,Hive的数据模型-外部表,指向已经在 HDFS 中存在的数据,可以创建 Partition 它和 内部表 在元数据的组织上是相同的,而实际数据的存储则有较大的差异 内部表 的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除 外部表
14、只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个 外部表 时,仅删除该链接,Hive的数据模型-外部表,CREATE EXTERNAL TABLE page_view ( viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING COMMENT IP Address of the User, country STRING COMMENT country of origination ) COMMENT This is the staging
15、page view table ROW FORMAT DELIMITED FIELDS TERMINATED BY 44 LINES TERMINATED BY 12 STORED AS TEXTFILE LOCATION hdfs:/centos:9000/user/data/staging/page_view;,Hive的数据模型-外部表,创建数据文件external_table.dat 创建表 hivecreate external table external_table1 (key string) ROW FORMAT DELIMITED FIELDS TERMINATED BY t
16、 location /home/external; 在HDFS创建目录/home/external #hadoop fs -put /home/external_table.dat /home/external 加载数据 LOAD DATA INPATH /home/external_table1.dat INTO TABLE external_table1; 查看数据 select * from external_table select count(*) from external_table 删除表 drop table external_table,视图操作,视图的创建 CREATE
17、VIEW v1 AS select * from t1;,表的操作,表的修改 alter table target_tab add columns (cols,string) 表的删除 drop table,导入数据,当数据被加载至表中时,不会对数据进行任何转换。Load 操作只是将数据复制/移动至 Hive 表对应的位置。 LOAD DATA LOCAL INPATH filepath OVERWRITE INTO TABLE tablename PARTITION (partcol1=val1, partcol2=val2 .) 把一个Hive表导入到另一个已建Hive表 INSERT O
18、VERWRITE TABLE tablename PARTITION (partcol1=val1, partcol2=val2 .) select_statement FROM from_statement CTAS CREATE EXTERNAL TABLE IF NOT EXISTS table_name (col_name data_type, .) AS SELECT 例:create table new_external_test as select * from external_table1;,查询,select SELECT ALL | DISTINCT select_exp
19、r, select_expr, . FROM table_reference WHERE where_condition GROUP BY col_list CLUSTER BY col_list | DISTRIBUTE BY col_list SORT BY col_list | ORDER BY col_list LIMIT number,DISTRIBUTE BY 指定分发器(Partitioner),多Reducer可用,查询,基于Partition的查询 一般 SELECT 查询是全表扫描。但如果是分区表,查询就可以利用分区剪枝(input pruning)的特性,类似“分区索引“”,只扫描一个表中它关心的那一部分。Hive 当前的实现是,只有分区断言(Partitioned by)出现在离 FROM 子句最近的那个WHERE 子句中,才会启用分区剪枝。例如,如果 page_views 表(按天分区)使用 date 列分区,以下语句只会读取分区为2008-03-01的数据。 SELECT page_views.* FROM page_views WHERE page_views.date = 2013-03-01 AND page_views.date = 2013-03-01 LIMIT Clause Limit 可以限制查询的记
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025浙江绍兴市中等专业学校合同制人员(融媒体工作技术员)招聘1人备考核心题库及答案解析
- 2025西安高新区第九初级中学招聘教师参考考试题库及答案解析
- 2025年商丘柘城县消防救援大队招录政府专职消防员53名考试核心题库及答案解析
- 2025中国煤科煤矿灾害防控全国重点实验室研发岗位招聘6人考试重点题库及答案解析
- 2025年西安交通大学第一附属医院医学影像科招聘考试重点试题及答案解析
- 2025年西安旅游股份有限公司招聘笔试重点试题及答案解析
- 2025辽宁建筑职业学院赴高校现场招聘10人模拟笔试试题及答案解析
- 2025广西百色市西林县消防救援大队政府专职消防员招聘15人考试重点题库及答案解析
- 2025江苏南京鼓楼医院人力资源服务中心招聘4人考试核心题库及答案解析
- 2026中证中小投资者服务中心招聘考试重点试题及答案解析
- Know Before You Go:趣谈“一带一路”国家智慧树知到期末考试答案章节答案2024年贵州理工学院
- JBT 11270-2024 立体仓库组合式钢结构货架技术规范(正式版)
- 求职OMG-大学生就业指导与技能开发智慧树知到期末考试答案章节答案2024年中国海洋大学
- JBT 7387-2014 工业过程控制系统用电动控制阀
- A课堂惩罚游戏
- 整理收纳师行业分析
- GB/T 228.1-2021金属材料拉伸试验第1部分:室温试验方法
- 氢能与燃料电池-课件-第五章-制氢技术
- 2023QC小组活动基础知识培训
- 生理学期末考试复习试题库及答案
- 旅游地理学 国家公园建设与管理
评论
0/150
提交评论