【阿尼亚喜欢BigData】“红亚杯”常用数据分析Hive SQL应用专题赛——满分解析①

大家好,喜欢Bigdata的阿尼亚来了!希望大家会喜欢阿尼亚的文章!!哇酷哇酷!!!

本次为师傅们带来的是“红亚杯”常用数据分析Hive SQL应用专题赛——满分解析系列的第①期,让我们先来看看完整赛题叭!

目录

“红亚杯”——常用数据分析Hive SQL应用专题赛

Hive专题赛(900 / 900分)

初始化环境(200 / 200分)

导入人口数据(100 / 100分)

简单查询(300 / 300分)

TopK、排序数据分析(150 / 150分)

Hive DDL基础操作(150 / 150分)

HiveSQL理论题(100 / 100分)

单选1-10(100 / 100分)


“红亚杯”——常用数据分析Hive SQL应用专题赛

本专题赛主要内容包括:了解Hive SQL使用、数据导入、Hive DDL(Create/Drop/Alter)、 简单查询(Count、Groupby)、TopK、排序在Hive中的实现。

Hive专题赛(900 / 900分)

初始化环境(200 / 200分)

本次环境为单节点伪集群环境,环境中已经安装JDK1.8、Hadoop2.7.7、Mysql5.7、hive2.3.4。

1.环境中已经安装/root/software/hadoop-2.7.7,格式化HDFS,开启集群,查看集群状态。(HDFS端口为9000,其他端口默认)

2.环境中已经安装/root/software/apache-hive-2.3.4-bin,需要开启mysql服务,初始化数据库,即可开启Hive客户端。

格式化并启动集群(200 / 200分)

1.环境中已经安装Hadoop2.7.7,格式化HDFS,开启集群,查看集群状态。(HDFS端口为9000,其他端口默认)

2.环境中已经安装Hive2.3.4,需要开启mysql服务,初始化数据库,即可开启Hive客户端。

考核条件如下:

1. 格式化集群(50.00 / 50分)

操作环境: hive专题赛环境

2. 启动集群(50.00 / 50分)

操作环境: hive专题赛环境

3. 开启mysql服务(50.00 / 50分)

操作环境: hive专题赛环境

4. 格式化Hive元数据库,进入Hive客户端(50.00 / 50分)

操作环境: hive专题赛环境

导入人口数据(100 / 100分)

创建表:

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]

Hive不支持一条一条的用insert语句进行插入操作,也不支持update的操作。数据是以load的方式,加载到建立好的表中。数据一旦导入,则不可修改。要么drop掉整个表,要么建立新的表,导入新的数据。

导入数据:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)]

创建数据库表,导入本地数据(100 / 100分)

本数据为某人口普查公开数据数据库抽取而来,该数据集类变量为年收入是否超过50k$,属性变量包含年龄、工作类型、教育程度等属性,统计对各因素对收入的影响。 数据地址:/college/person.csv

数据变量如下:

字段类型说明
agedouble年龄
workclassstring工作类型
fnlwgtstring可代表的人数
edustring教育程度
edu_numdouble受教育时间
marital_statusstring婚姻状况
occupationstring职业
relationshipstring关系
racestring种族
sexstring性别
gainstring资本收益
lossstring资本损失
hoursdouble每周工作时长
nativestring原籍
incomestring收入

示例数据:

66,Federal-gov,47358,10th,6,Married-civ-spouse,Craft-repair,Husband,White,Male,3471,0,40,United-States,<=50K

考核条件如下:

1. hive中创建person数据库,并在person数据库下创建person外部表(50.00 / 50分)

操作环境: hive专题赛环境

2. 向person外部表中加载本地数据“/root/college/person.csv”,注意字段类型,自行定义(50.00 / 50分)

操作环境: hive专题赛环境

简单查询(300 / 300分)

select完整格式

完整格式如下:

select 
[distinct] 字段名
from 表名
where 查询条件
group by 分组字段
having 筛选条件
order by 排序字段
limit 限制条件

查询顺序为:  

from       -- 拿到表的数据
where      -- 对根据条件表数据进行筛选
group by     -- 根据某个字段进行分组
having       -- 对分组之后的数据进行再次筛选
order by     -- 对数据排序(排序不止有order by)
limit        -- 限制数据条数
distinct     -- 对数据去重
             -- 执行聚合函数对结果进行聚合
select       -- 查询的结果(select结果的本质是一张虚拟表)

简单查询(Count、Max、Min、Groupby)(300 / 300分)

1.使用count函数统计表中所有数据。 2.使用max函数求最大 3.使用min函数求最小 4.根据sex性别列分组,再使用avg函数求取每组下的平均年龄,并使用round函数进行四舍五入 5.区间比较: between and

考核条件如下:

1. 统计表中数据总条数,将结果写入本地/root/person00/。(50.00 / 50分)

操作环境: hive专题赛环境

2. 求person表中年龄最大的人,将结果写入本地/root/person01/。(50.00 / 50分)

操作环境: hive专题赛环境

3. 求person表中年龄最小的人,将结果写入本地/root/person02/。(50.00 / 50分)

操作环境: hive专题赛环境

4. 根据性别求取person表中男女平均年龄,并进行四舍五入,将结果写入本地/root/person03/。(50.00 / 50分)

操作环境: hive专题赛环境

5. 统计年龄为35岁至40岁且婚姻状况是“Never-married”(未婚)人的总数,将结果写入本地/root/person04/。(50.00 / 50分)

操作环境: hive专题赛环境

6. 求取每周工作时长为20至30小时且职业是“Tech-support”(技术支持)的人员总数,将结果写入本地/root/person05/。(50.00 / 50分)

操作环境: hive专题赛环境

TopK、排序数据分析(150 / 150分)

1. 全局排序( order by) Order By:全局排序,一个Reducer ASC(ascend): 升序(默认) DESC(descend): 降序 ORDER BY子句在SELECT语句的结尾

2. 内部排序(Sort By) Sort By:每个Reducer内部进行排序,对全局结果集来说不是排序。一般结合的是Distributed by使用 sort by 是单独在各自的reduce中进行排序,所以并不能保证全局有序,一般和distribute by 一起执行,而且distribute by要写在sort by前面。 如果mapred.reduce.tasks=1和order by效果一样,如果大于1会分成几个文件输出每个文件会按照指定的字段排序,而不保证全局有序。

3.Group By语句 GROUP BY语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然后对每个组执行聚合操作。

TopK、排序数据分析(150 / 150分)

注意:

为防止大数据集群稳定性,类似非全等join(非inner join)是禁止的,禁用了emanticException笛卡尔产品。

FAILED: SemanticException Cartesian products are disabled for safety reasons. If you know what you are doing, please sethive.strict.checks.cartesian.product to false and that hive.mapred.mode is not set to 'strict' to proceed. Note that if you may get errors or incorrect results if you make a mistake while using some of the unsafe features.

以下步骤为设置Hive支持笛卡尔积:

首先查看hive.strict.checks.cartesian.product。

set hive.strict.checks.cartesian.product;

设置hive.strict.checks.cartesian.product为false,表示支持笛卡尔积。

set hive.strict.checks.cartesian.product=false;

考核条件如下:

1. 统计person表中各种族(race)的总人数,并按照总人数倒序排序,将结果写入本地/root/person06/。(50.00 / 50分)

操作环境: hive专题赛环境

2. 统计不同职业薪资大于50K的总人数,且人数按照降序排序取Top3,将结果写入本地/root/person07/。(50.00 / 50分)

操作环境: hive专题赛环境

3. 计算较高收入(收入等于大于50K的为高收入)人群占整体数据的比例(保留两位小数),注意:设置支持笛卡尔积参考步骤说明,将结果写入本地/root/person08/。(50.00 / 50分)

操作环境: hive专题赛环境

Hive DDL基础操作(150 / 150分)

DML(Data Manipulation Language) 数据操纵语言:主要用来对数据库的数据进行一些操作,常用的就是INSERT、UPDATE、DELETE。 DDL(Data Define Language) 数据定义语言:常用的有CREATE和DROP,用于在数据库中创建新表或删除表,以及为表加入索引等 DCL(Data Control Language) 数据控制语言:通过GRANT和REVOKE,确定单个用户或用户组对数据库对象的访问权限

hiveDDL操作:

  • hive数据类型

  • hive数据编码

  • hive数据类型转换

  • hive创建数据库

  • hive创建表(三种方式)

  • hive表修改

  • hive内部表和外部表

  • hive表压缩格式

Hive DDL基础操作(150 / 150分)

Hive DDL基础操作

数据表字段:

字段类型说明
IdIntID唯一标识
Namestring姓名
AgeInt年龄
Sexstring性别

考核条件如下:

1. 在person数据库下创建student内部表(表结构参考步骤描述),并指定以制表符“\t”分隔;(50.00 / 50分)

操作环境: hive专题赛环境

2. 使用alter语句修改student内部表结构新增一列字段名称为“address”,类型为“string”;(50.00 / 50分)

操作环境: hive专题赛环境

3. 使用drop语句删除student内部表。(50.00 / 50分)

操作环境: hive专题赛环境

HiveSQL理论题(100 / 100分)

理论测评阶段共包含10道题目

分数合计为:100分

单选1-10(100 / 100分)

单选题 (1) Hive是以( )技术为基础的数据仓库。

A、HDFS

B、MAPREDUCE

C、HADOOP

D、HBASE

单选题 (2) 以下哪个操作是hive不支持的?( )。

A、表新增列

B、表删除列

C、表修改列

D、修改表名

单选题 (3) Hive中以下操作不正确的是( )。

A、load data inpath into table name

B、insert into table name

C、insert overwrite table name

D、insert overwrite into table name

单选题 (4) 以下关于Hive操作描述不正确的是( )。

A、Hive 是一个建立在hadoop文件系统上的数据仓库架构,可以用其对HDFS上

B、Hive依赖于MapReduce 处理数据

C、Hive的加载数据时候,可以用local进行修饰,表示从某个本地目录下加载数据

D、Hive一般可以用于实时的查询分析

单选题 (5) 以下对hive中表数据操作描述正确的是( )。

A、hive可以修改行值

B、hive可以修改列值

C、hive不可以修改特定行值、列值

D、以上说法都不对

单选题 (6) 以下哪种不是Hive支持的数据类型?

A、Struct

B、Int

C、Map

D、Long

单选题 (7) Hive中的数据类型,下面说正确的是( )。

A、TINYINT,1个字节(8位)有符号整数

B、SMALLINT,2个字节(16位)有符号整数

C、INT,4个字节(32位)有符号整数

D、以上都正确

单选题 (8) 关于Hive中的桶说法不正确的是( )?

A、每个桶是一个目录

B、建表时指定桶个数,桶内可排序

C、数据按照某个字段的值Hash后放入某个桶中

D、对于数据抽样、特定join的优化很有意义

单选题 (9) Hive 中的这条命令“ alter table employee add columns(column1 string)”是什么含义?

A、创建表

B、删除表

C、添加列

D、修改文件格式

单选题 (10) 关于hive 建表基本描述正确的是?( )

A、不可再修改表名

B、不可再增加新列

C、创建外部表需要指定external关键字

D、不可再修改列

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱波吉的阿尼亚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值