赞
踩
基本使用 sql语言
show databases; 查看数据库 ; 不能省略
优点:
缺点:
HIve架构设计
特别说明:hive2.2以后版本变化较大,去掉了HWI模块,HiveCLI模式也直接采用了beeline链接
从上图可以看出,Hive的体系结构分为以下几部分:
Hive 基础应用
1。Hive基础概念
1.hive 数据模型
2。HiveSql
DDL建表说明
1 元数据:描述数据的数据
2.表分类:主要分内表和外表
1.内表:元数据和数据本身均被Hive管理。删除表则全部删除
2.外表:元数据被hive管理,数据本身存储在hdfs,不受hive管理,删除表则只删除元数据,数据本身不变。
3.建表模板
- CREATE [external] TABLE [IF NOT EXISTS] table_name
- [(col_name data_type [comment col_comment], ...)]
- [comment table_comment]
- [partitioned by (col_name data_type [comment col_comment], ...)]
- [clustered by (col_name, col_name, ...)
- [sorted by (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
- [row format row_format]
- [stored as file_format]
- [location hdfs_path]
关键词解释
例子:创建学生表
- CREATE TABLE student(
- id string comment '学号',
- username string comment '姓名',
- classid int comment '班级id',
- classname string comment '班级名称'
- )
- comment '学生信息主表'
- partitioned by (come_date string comment '按入学年份分区')
- ROW FORMAT DELIMITED
- FIELDS TERMINATED BY '\001'
- LINES TERMINATED BY '\n'
- STORED AS textfile;
5DMl语句:
加载脚本语句
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
加载HDFS数据文件的脚本
LOAD DATA INPATH '/tmp/tianliangedu/input_student_info/student.txt' OVERWRITE INTO TABLE student PARTITION (come_date=20170904);
Hive自定义函数:
1导包:
- <dependencies>
- <!-- 引入hadoop-cli-2.7.4依赖 -->
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-client</artifactId>
- <version>2.7.4</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.hive</groupId>
- <artifactId>hive-cli</artifactId>
- <version>1.2.1</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
- <build>
- <finalName>TlHadoopCore</finalName>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>assembly</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.3.2</version>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- </plugins>
- </build>
上传jar包到hive交互中
add jar hdfs:///home/hive/tianliangedu_course/04_udf/TlHadoopCore-jar-with-dependencies.jar;
声明函数
- create temporary function mask
- as
- 'com.tianliangedu.hive.udf.ValueMaskUDF';
特别说明:
关于MapJoin的问题剖析
概念说明:将join的本来应该是reduce进行关联查找的过程,改成有纯map端进行关联查找。
特点特征:减少了reduce的处理,全部放到map端进行操作
减少了数据移动,提升了IO和计算效率。
应用场景:大表join小表的时候:大数据块join小数据块的时候。
为什么:在对大数据块的移动时,消耗的资源较多,所以在map端将大数据块就分为块状,然后在reduce端时将小数据块寻找大数据块。
代码实现:在Hive当中已经默认开启了该功能
关于数据切斜的问题剖析
概念说明:在大数据处理环境下,数据处理过程出现明显的切斜现象,导致任务整体迟迟不能完全结束。
特点特征:在作业或是任务在分布式执行时,经常出现大部分Task任务很快结束,而很少一部分Task,往往是一个或者一到两个一直卡在99%的情况下。典型的木桶原理,任务的执行完成时间,取决于最后一个task的完成时间。
应用场景:假倾斜场景 :数据格式设置不对,导致没有发挥分布式处理的优势
Sql编写不合理:如:select count(distinct uid)from visted log
改成:select count(1)form (select1 from user group by uid )temp;
个别机器性能较差。导致无法完成,更新硬件,是机器的硬件更加平均。给机器添加标签,启动任务指定对应的机器。
解决:代码优化就可以
真倾斜场景:记数据或是人物本身真的存在客观的倾斜性、比如:VIP会员数据的倒买倒卖问题导致极少数vip账号对应的数据量级多,而正常账号较少。
解决方法:分而治之,将倾斜的数据分类,将正常数据分类,然后进行分别计算
1数据仓库架构设计
数据仓库主要工作就是ETL
1数据架构:
架构原则:先水平分层:在垂直分主题域。
数据架构分三层:
源数据落地区(SDF:source Data FIle)
数据仓库层(DW: Data WareHouse)
数据集市层(DW:Data Market)
数据仓库层进一步细分为三层
源数据层(DWB)
细节数据层(DWD)
汇总数据层(DWS)
2.数据仓库分层介绍(水平划分)
3按主题划分
二. 数据仓库建模
2数据仓库建模的发展历史与意义
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。