《Hive数据仓库技术》(重大)知识点:评估试题及答案 第1-7章_第1页
《Hive数据仓库技术》(重大)知识点:评估试题及答案 第1-7章_第2页
《Hive数据仓库技术》(重大)知识点:评估试题及答案 第1-7章_第3页
《Hive数据仓库技术》(重大)知识点:评估试题及答案 第1-7章_第4页
《Hive数据仓库技术》(重大)知识点:评估试题及答案 第1-7章_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习知识点后请完成以下练习题

1)数据仓库是为分析数据而设计,它的两个基本的元素是维度表和事实表。维是看问题的

角度,比如时间,部门,维度表放的就是这些东西的定义,事实表里放着要查询的数据,

同时有维的ID。

A.正确

B.错误

2)下面哪个不是数据仓库的特点()。(单选)

A.面向主题

B.集成

C.不可更新

D.规范化

3)数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询。数据仓库的数

据以只读格式保存,且不随时间改变,但是数据量会增加。

A.正确

B.错误

4)数据仓库和。ds的数据源通常都是多样化,有数据库、文本、WebSocket接口、消息

队列等,涉及的字段多且杂,所以元数据也需保存,即将描述数据的数据保存起来。

A.正确

B.错误

5)关于MyBatis描述错误的是()。(单选)

A.大量字段的POJO进行部分映射时比较困难

B.用逻辑标签控制动态SQL的拼接

C.sql语句与代码分离,存放于xml配置文件中

D.查询的结果集与java对象自动映射

6)数据仓库系统是一个信息提供平台,他从业务处理系统获得数据,主要以星型模型和雪

花模型进行数据组织,并为用户提供各种手段从数据中获取信息和知识。从功能结构划

分,数据仓库系统至少应该包含数据获取、数据存储、数据访问三个关键部分.而Hive

作为一个数据仓库工具,对于这个三个部分的实现都提供了相应的支持。

A.正确

B.错误

学习知识点后请完成以下练习题

7)从传统的在线交易系统转换为基于主题的数据仓库系统,就涉及到从传统的第三范式设

计到星型模型、雪花模型构建的过程,以及数据的抽取、转换、加载的过程,这个过程

就是数据仓库的分层设计架构。

A.正确

B.错误

8)数据分层是一套让我们的数据体系更有序的行之有效的数据组织和管理方法,同时:数

据分层就了有一套行之有效的标准。

A.正确

B.错误

9)下面哪个不是数据分层的优点()。(单选)

A.数据结构化更清晰

B.统一数据口径

C.增强数据复用能力

D.实时提供信息供决策

10)关于ODS描述错误的是()。(单选)

A.是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传

说中的ETL之后,装入本层;一般来说ODS层的数据和源系统的数据是同构的,主要

目的是简化后续数据加工处理的工作。

B.从数据粒度上来说ODS层的数据粒度是最细的。

C.ODS层是满足多个业务系统获取数据并制作操作型报表的需求,保留半年以内的明细

准实时数据

D.ODS层只用于存储当前需要加载的数据。

11)关于数据仓库层描述错误的是()。(单选)

A.数据仓库层是我们在做数据仓库时要核心设计的一层,本层将从ODS层中获得的数

据按照主题建立各种数据模型,每一个主题对应一个宏观的分析领域,数据仓库层排除

对决策无用的数据,提供特定主题的简明视图。在DW层会保存BI系统中所有的历史

数据,例如保存1。年的数据。

B.在实际构建过程中,业界也在不断探索和完善数据分层架构,将DW层又细分为数据

明细层、数据中间层和数据服务层。

C.数据仓库的数据都还是在Hive指定的目录里(默认是HDFS上的/user/hive/ware

house),分层一般就是创建不同的database。

D.数据仓库分层的层名、表名都有具体标准,比如ODS层database命名为ods,ODS

层表命名为ods_表名等。

学习知识点后请完成以下练习题

12)某一张员工表的字段构成为:员工id(主键),姓名,性别,年龄,所属部门,部门经

理姓名,部门电话,违反了哪一范式()。(单选)

A.第一范式

B.第二范式

C.第三范式

D.第一、二范式

13)关于数据建模目标描述错误的是()。(单选)

A.数据仓库建模的目标是通过建模的方法更好的组织、存储数据,以便在访问性能、数

据与计算成本、使用效率和数据质量之间找到最佳平衡点。

B.数据质量是指整合所有数据源的数据,改善数据统计口径的不一致性,减少数据计算

错误的可能性,提供高质量的、一致的数据访问平台。

C.数据仓库建模的目标是存在冲突的,比如为了提高访问性能,可能会提高数据冗余(减

少Join),这样会降低计算成本,但是会导致数据存储成本很高,并且由于数据的冗

余,会提高数据统计口径不一致的风险。

D.以上不全对

14)关于下图描述不正确的是()。(单选)

选修M间

(学4g卜-----------'

—学生<——»课程-----

11M

(r------------------JL---------

、一选性

A.这是一个ER模型

B.学生表与课程表是实体表,选修表是关系表

C.学生与课程的关系是l:n

D.以上不全对

15)关于下图描述不正确的是()。(单选)

A.这是一个维度模型中的星型模式

B.Order_factl为周期性型事实表

C.Area_diml有维度冗余,反3NF

D.以上说法不全对

16)关于事实表与维度表说法错误的是()»(单选)

A.事实表用来存储事实的度量(measure)及指向各个维的外键值、事件描述信息。

B.存储随着业务发生不断产生变化(更新,新增)数据的表是周期型事实表

C.维度表的范围很宽(具有多个属性、列比较多);跟事实表相比,行数相对较小:通

常<10万条;内容固定不变,又称编码表。

D.以上说法不全对

17)关于建模说法错误的是()。(单选)

A.ER模型以及维度模型是当前主流的建模方法。ER模型常用于OLTP数据库建模,

应用到构建数仓时更偏重数据整合,站在企业整体考虑,将各个系统的数据按相似性、

一致性合并处理,为数据分析、决策服务,但并不便于直接用来支持分析。

B.维度建模是面向分析场景而生,针对分析场景构建数仓模型;重点关注快速、灵活的

解决分析需求,同时能够提供大规模数据的快速响应性能。针对性强,主要应用于数据

仓库构建和OLAP引擎低层数据模型。

C.维度建模里的事实表就是ER模型里的关系表,维度表就是ER模型的实体表

D.以上说法不全对

18)关于维度模型的模式选择说法错误的是()。(单选)

A.雪花模式与星型模式都属于维度模型,因为他们的事实表一般会不满足规范化设计。

B.雪花模式与星型模式的区别是雪花模式的维度表符合3NF,而星型模式不满足。

C.Hive的分析通过MapReduce实现,每多一个Join就会多出一个MapReduce过

程,对于雪花模型,由于存在着很多维度表之间的关联,这就会导致一次分析对应多个

MapReduce任务,而雪花模式由于不存在维度表的关联,因此一个MapReduce就可

以实现分析任务,性能高很多。

D.以上不全对

学习知识点后请完成以下练习题

19)在实际项目中,关系数据库里的数据需要同步到数据仓库里进行统计分析,针对不同的

表有不同的同步策略。数据同步策略的类型包括:全量表、增量表、新增及变化表、拉

链表。

A.正确

B.错误

20)维度表数据量比较小,完全可以做每日全量,就是每天存一份完整数据,但对一些数据

量较大缓慢变化维度表需要保存数据的所有历史状态,对于新增数据也保存,这时可以

做拉链表。

A.正确

B.错误

21)事务型事实表数据不会变化,而且数据量巨大,所以每天只同步新增数据即可,所以可

以做成每日增量表,即每H创建一个分区存储。

A.正确

B.错误

22)周期型事实表,存每日全量的话,数据量太大,冗余也太大。如果用每日增量的话无法

反应数据变化,需要保存历史状态和新增数据,所以我们需要制作一张拉链表。

A.正确

B.错误

23)下面关于拉链表描述错误的是()。(单选)

A.对新增及变化表做定期合并,即某个时间切片的快照数据

B.拉链表,既能满足对历史数据的需求,又能很大程度的节省存储资源

C.拉链表需增加两字段,一个是表示该条记录的生命周期开始时间,另一个是表示该条

记录的生命周期结束时间;拉链表的数据为:当天最新的数据UNIONALL历史数据。

D.以上不全对

学习知识点后请完成以下练习题

24)Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询插入操

作以及进行Join和Union等复杂查询,从而进行统计分析。同时也可以将Hive表中

的数据映射到HBase中以便供前端低延时查询。

A.正确

B.错误

25)关于Hive与HBase集成,描述错误的是()。(单选)

A.Hive与HBase利用两者本身对外的API来实现整合,主要是靠HiveHBaseTablel

nputFormat进行通信。

B.Hive访问HBase中表数据,实质上是通过MapReduce读取HBase表数据。

C.对HBase表的切分原则是一个Region切分成一个Split,即表中有多少个Regions.

MR中就有多少个Map;读取HBase表数据都是通过构建Scanner,对表进行全表扫描,

如果有过滤条件,则转化为Filter。

D.以上不全对

26)关于Hive与HBase集成应用场景,描述错误的是()。(单选)

A.将Hbase作为Hive的数据源,让Hbase支持类SQL操作。

B^HiveETL数据存入HBase,便于快速查询。

C.构建低延时的数据仓库。利用HBase的快速读写能力,实现数据实时查询。

D.以上不全对

27)关于hive与hbase版本兼容性,描述错误的是()。(单选)

A.hivel.x与hbasel.x是兼容

B.编译hive-hbase-handler.jar包需要准备hive源码包,以及hbase、hive的文件夹里的

jar包

C.把编译获得的hive-hbase-handler.jar替换掉/hive/lib里的hive-hbase-han

dler-X.X.X.jaro

D.以上不全对

28)测试Hive与HBase集成是否成功,可以依次启动Hadoop、HBase>Zookeeper、Hive,

创建与HBase关联的Hive管理表或外部表来测试。

A.正确

B.错误

学习知识点后请完成以下练习题

29)通过创建Hive管理表的方式创建IIBase表,或创建Hive外部表关联HBase表,都需要通

过hive的create语句,使用hbase.columns,mapping属性指定表字段的映射关系,使

用指定hbase的表名。

A.正确

B.错误

30)不能将数据直接load进Hive所关联HBase的表中,需要在Hive中创建临时中间表,

用于load文件中的数据,然后通过insert命令将中间表中的数据导入到Hive关联

HBase的那张表中。

A.正确

B.错误

31)删除与某HBase表关联的Hive表,将会导致HBase表也被删除,数据丢失。

A.正确

B.错误

32)HiveoverIIBase比HiveoverHDFS性能快。

A.正确

B.错误

33)HiveoverHBase性能瓶颈主要在两方面:Map数、ScanRPC请求次数。

A.正确

B.错误

学习知识点后请完成以下练习题

34)如果在HiveClient界面执行"sethive.fetch.task.conversion=more;"命令,

那么在本session中进行全局查找、字段查找、limit查找等都不走mapreduce»

A.正确

B.错误

35)如果在HiveClient界面执行"sethive.exec.mode.local.auto=true;n命令,

那么在本Session中,Hive将通过本地模式在单台机器上处理所有的任务。对于小数

据集,执行时间可以明显被缩短。。

A.正确

B.错误

36)小表、大表进行Join时,在HiveClient界面执行"sethive.auto.convert.join

=true;”命令来使用mapjoin让小的维度表(1000条以下的记录条数)先进内存,

在m叩端完成join,避免reducer处理,提高join效率。

A.正确

B.错误

37)大表Join大表有时join超时是因为某些key对应的数据太多,而相同key对应的数据

都会发送到相同的reducer上,从而导致内存不够。此时我们应该仔细分析这些异常的

key,很多情况下,这些key对应的数据是异常数据,我们需要在SQL语句中进行过滤。

有时虽然某个key为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在

join的结果中,此时我们可以把表中key为空的字段赋一个随机的值,使得数据随机

均匀地分不到不同的reducer上。

A.正确

B.错误

38)关于GroupBy导致数据倾斜,描述错误的是()。(单选)

A.默认情况下,Map阶段同一Key数据分发给一个reduce,当一个key数据过大时就

倾斜了。

B.并不是所有的聚合操作都需要在Reduce端完成,很多聚合操作都可以先在Map端进

行部分聚合,最后在Reduce端得出最终结果,所以可以通过参数设置开启Map端聚合。

C.使用命令"sethive.groupby.skewindata=true”有数据倾斜的时候进行负

载均衡

D.以上不全对

39)关于查询优化,描述错误的是()。(单选)

A.尽量避免笛卡尔积,因为join的时候不加on条件,或者无效的。n条件,Hive只

能使用1个reducer来完成笛卡尔积。

B.在SELECT中,只拿需要的列,少用SELECT*,一是减少耗内存,二是提高I/。效

率,三是表一般都是列存储,只拿需要的列,提高查询效率。

C.当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,

之后再过滤,最好改为通过子查询后,再关联表。

D.以上不全对

40)关于动态分区,描述错误的是()。(单选)

A.要动态分区,需设置为非严格模式。

B.要根据实际情况指定在所有执行MR的节点和每个执行MR的节点上,分别最大一共

可以创建多少个动态分区。

C.需要指定整个MRJob中,最大可以创建多少个HDFS文件。

D.当有空分区生成时,是否抛出异常。一般需要设置为true。

学习知识点后请完成以下练习题

41)如果在HiveClient界面执行"sethive.fetch.task.conversion=more;w命令,

那么在本session中进行全局查找、字段查找、limit查找等都不走mapreduce。

A.正确

B.错误

42)如果在HiveClient界面执行"sethive.exec.mode.local.auto=true;n命令,

那么在本Session中,Hive将通过本地模式在单台机器上处理所有的任务。对于小数

据集,执行时间可以明显被缩短。。

A.正确

B.错误

43)小表、大表进行Join时,在HiveClient界面执行"sethive.auto.convert.join

=true;”命令来使用mapjoin让小的维度表(100。条以下的记录条数)先进内存,

在m叩端完成join,避免reducer处理,提高join效率。

A.正确

B.错误

44)大表Join大表有时join超时是因为某些key对应的数据太多,而相同key对应的数据

都会发送到相同的reducer上,从而导致内存不够。此时我们应该仔细分析这些异常的

key,很多情况下,这些key对应的数据是异常数据,我们需要在SQL语句中进行过滤。

有时虽然某个key为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在

join的结果中,此时我们可以把表中key为空的字段赋一个随机的值,使得数据随机

均匀地分不到不同的reducer上。

A.正确

B.错误

45)关于GroupBy导致数据倾斜,描述错误的是()。(单选)

A.默认情况下,M叩阶段同一Key数据分发给一个reduce,当一个key数据过大时就

倾斜了。

B.并不是所有的聚合操作都需要在Reduce端完成,很多聚合操作都可以先在Map端进

行部分聚合,最后在Reduce端得出最终结果,所以可以通过参数设置开启Map端聚合。

C.使用命令"sethive.groupby.skewindata=true”有数据倾斜的时候进行负

载均衡

D.以上不全对

46)关于查询优化,描述错误的是()。(单选)

A.尽量避免笛卡尔积,因为join的时候不加on条件,或者无效的on条件,Hive只

能使用1个reducer来完成笛卡尔积。

B.在SELECT中,只拿需要的列,少用SELECT*,一是减少耗内存,二是提高I/O效

率,三是表一般都是列存储,只拿需要的列,提高查询效率。

C.当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,

之后再过滤,最好改为通过子查询后,再关联表。

D.以上不全对

47)关于动态分区,描述错误的是()。(单选)

A.要动态分区,需设置为非严格模式。

B.要根据实际情况指定在所有执行MR的节点和每个执行MR的节点上,分别最大一共

可以创建多少个动态分区。

C.需要指定整个MRJob中,最大可以创建多少个HDFS文件。

D.当有空分区生成时,是否抛出异常。-一般需要设置为true。

学习知识点后请完成以下练习题

48)关于Map数设置,描述错误的是()。(单选)

A.如果数据文件有很多小文件,在map执行前合并小文件,减少map数。

B.当数据文件的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加

Map数,来使得每个m叩处理的数据量减少,从而提高任务的执行效率。

C.当数据文件大小接近块大小时,比如有一个127m的文件,正常会用一个map去完成。

但只有一个或者两个小字段,却有几千万的记录,如果map处理的逻辑比较复杂,用

一个map任务去做,肯定也比较耗时,这时需要增加map数,提高并行度,提高运算

效率。

D.以上不全对

49)关于reduce数设置,描述错误的是()。(单选)

A.计算reducer数的公式N=min(每个任务最大的reduce数,总输入数据量/每个Reduce

处理的数据量),其中每个任务最大的reduce数和每个Reduce处理的数据量都可以指定,

两者默认值分别为:256M、1009。

B.还可以使用"mapreduce.job.reduces”参数直接指定每个job的Reduce个数。

C.reduce个数并不是越多越好,因为过多的启动和初始化reduce也会消耗时间和资源;

另外,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果

这些小文件作为下一个任务的输入,则也会出现小文件过多的问题。

D.在设置reduce个数的时候也需要考虑这两个原则:处理大数据量利用合适的reduce

数:使单个reduce任务处理数据量大小要合适。

50)系统资源比较空闲的时候,可以通过设置参数hive.exec.parallel值为true,开启

并发执行,增加集群利用率。

A.正确

B.错误

51)关于Hive严格模式,描述错误的是()。(单选)

A.对于分区表,除非where语句中含有分区字段过滤条件来限制范围,否则不允许执

行。

B.对于使用了orderby语句的查询,要求必须使用limit语句。

C.限制笛卡尔积的查询。

D.以上不全对

52)Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的,这时JVM的启

动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。

JVM重用可以使得JVM实例在同一个job中重新使用N次,减少了JVM的启动,缩短

了执行时间,建议JVM重用次数越多越好。

A.正确

B.错误

学习知识点后请完成以下练习题

53)Hadoop的job通常是I/O密集型而不是CPU密集型的。如果是这样的话,压缩可以提

高性能,所以必须压缩以节省存储空间与I/O性能。

A.正确

B.错误

54)Hadoop2.7.3内置支持GZIP和BZip2压缩方案,但不支持Snappy压缩、LZ0压缩,需

要自行编译增加相关的库。

A.正确

B.错误

55)关于如何选择一种压缩编/解码器,描述错误的是()。(单选)

A.每一个压缩方案需要在压缩/解压缩速度和压缩率间进行权衡。另一个需要考虑的因

素是压缩格式的文件是否是可分割的。

B.BZip2压缩率最高,但是同时需要消耗最多的CPU开销。GZip是压缩率和压缩/解压

缩速度上的下一个选择。因此,如果磁盘空间利用率和I/O开销都需要考虑的话,那么

这2种压缩方案都是有吸引力的。LZO和Snappy压缩率相比前面的2种要小但是压缩

/解压缩速度要快,特别是解压缩过程。如果相对于磁盘空间和I/O开销,频繁读取数

据所需的解压缩速度更重要的话,那么它们将是不错的选择。

C.BZip2和LZO提供了块(BLOCK)级别的压缩,也就是每个块中都含有完整的记录信

息,因此Hadoop可以在块边界级别对这些文件进行划分。但是GZip和Snappy将文

本文件边界信息掩盖掉了,GZip和Snappy压缩的文件不可划分。因此综合考虑,想

高压缩率则选择BZip2,想选择高并行度则选择LZO,GZip和Snappy不可选。

D.以上不全对

56)关于hadoop支持的编码/解码器描述错误的是()。(单选)

A.LZO不是hadoop自带的需要安装,被压缩后的数据需要建索引,还需要指定输入格

B.bzip2、gzip、LZO、Snappy压缩率依次升高,压缩/解压速度则相反

C.当每个文件压缩之后在130M以内的(1个块大小内),都可以考虑用Gzip压缩格式。

例如说一天或者一个小时的日志压缩成一个Gzip文件。

D.Bzip2格式适合对速度要求不高,但需要较高的压缩率的时候;或者输出之后的数据

比较大,处理之后的数据需要压缩存档减少磁盘空间并且以后数据用得比较少的情况;

或者对单个很大的文本文件想压缩减少存储空间,同时又需要支持Split,而且兼容之

前的应用程序的情况。

57)Snappy应用场景为:当MapReduce作业的Map输出的数据比较大的时候,作为Map到

Reduce的中间数据的压缩格式;或者作为一个MapReduce作业的输出和另外一个MapR

educe作业的输入。

A.正确

B.错误

学习知识点后请完成以下练习题

58)压缩参数设置常用方式有两种:修改配置文件和参数声明方式。

A.正确

B.错误

59)要想永久设置hadoop支持Snappy压缩格式,则需要在core-site,xml中修改io.comp

ression.codecs参数值,然后使用scp命令把该配置文件同步到其它主机。

A.正确

B.错误

60)要想永久设置mapper输出压缩格式为Snappy,则需要在core-site,xml中修改

mapreduce.map.output,compress和mapreduce.map.output,compress,codec的参数

值,然后使用scp命令把该配置文件同步到其它主机。

A.正确

B.错误

61)想在当前session里开启map输出阶段压缩,且压缩格式为Gzip,以减少job中map

和Reducetask间数据传输量,则需要在hiveclient界面里输入执行命令"setm

apreduce.mpress=true;/口asetmapreduce.map.output.comp

ress・codec=org.apache.hadoop・io・compress.GzipCodec;

A.正确

B.错误

62)想在当前session里开启reduce输出阶段压缩,且压缩格式为Gzip以节省存储空间,

则需要在hiveclient界面里输入执行命令"sethive.exec.compress.output=t

rue;“、“setmapreduce.output.fileoutputformat.compress=true,\"setma

preduce.output.fileoutputformpress.codec=org.apache.hadoop.io.

compress.GzipCodec;和“setmapreduce.output.fileoutputformat.compre

ss・type=BLOCK;

A.正确

B.错误

学习知识点后请完成以下练习题

63)关于Hadoop源码编译支持Snappy压缩,下面哪个软件不需要安装()。(单选)

A.Anaconda

B.JDK

C.Maven

D.gcc

64)安装snappy好后,还要编译Hadoop源码的原因是为了得到Hadoop里的lib/native,

以替换原Hadoop集群每台服务器里的lib/native。

A.正确

B.错误

65)使用命令"hadoopchecknative可以查看hadoop支持的压缩类型。

A.正确

B.错误

66)要想永久设置Hadoop支持Snappy压缩格式,则需要在core-site,xml的io.compress

ion.codecs参数值末尾添力口“org・apache.hadoop.io.compress.SnappyCodec",

然后使用scp命令把core-site.xnd配置文件同步到其它主机,最后需要重启Hadoop

集群才生效。

A.正确

B.错误

67)Snappy比Gzip压缩率低,但压缩/解压速度比Gzip高,所以适合作为Map到Reduce

的中间数据的压缩格式,或者作为一个MapReduce作业的输出和另外一个MapReduce

作业的输入。

A.正确

B.错误

学习知识点后请完成以下练习题

68)关于Hive数学内置函数描述错误的是()。(单选)

A.round(DOUBLEa,INTd)返回保留d位小数的DOUBLE型的近似值

B.ceiKDOUBLEa)为向下取整,最数轴上最接近要求的值的左边的值,如:6.10->6,

-3.4->-4。

C.exp(DOUBLEa)返回e的a哥次方,a可为小数

D.log(DOUBLEbase,DOUBLEa)返回以base为底a的对数,base与a都是DOUBLE

类型

69)关于Hive内置函数描述错误的是()。(单选)

A.cast(expras<type>)将expr强制转换成type类型如:cast(TasBIGINT)将字符串1

转换成了BIGINT类型,如果转换失败将返回NULL

B.array_contains(Array<T>,value)功能是如果该数组Array<T>包含value返回true。否贝ij

返回false

C.map_values(Map<K.V>)返回map中的所有value

D.以上不全对

70)关于Hive内置日期函数描述错误的是()。(单选)

A.from_unixtime(bigintunixtimel,stringformat])是将时间的秒值转换成format格式

(format可为"yyyy-MM-ddhh:mm:ss","yyyy-MM-ddhh","yyyy-MM-ddhh:mm”

等等)。如from_unixtime(1250111000,"yyyy-MM-dd")得至Ij2009-03-12o

B.next_day(stringstart_date,stringday_oCweek)返回当前时间的下一个星期X所对应的

日期。如:next_day('2015-01-14','TU')=2015-01-20表示以2015-01-14为开始时间,其

下一个星期二所对应的日期为2015-01-20。

C.datediff(stringenddate,stringstartdate)是计算开始时间startdate到结束时间enddate相

差的天数。

D.以上不全对

71)关于Hive内置函数描述错误的是()。(单选)

A.i{'(booleantestCondition,TvalueTrue,TvalueFalseOrNull)表示如果testCondition为true

就返回valueTrue,否则返回valueFalseOrNull(valueTrue,valueFalseOrNull为泛型)。

B.format_number(numberx,intd)是将数值X转换成"#,###,###.##"格式字符串,并保留d

位小数,如果d为0,将进行四舍五入且不保留小数。

C.getjson_object(stringjson_string,stringpath)从指定路径上的JSON字符串抽取出

JSON对象,并返回这个对象的JSON格式,如果输入的JSON是非法的将返回NULL,

注意此路径上JSON字符串只能由数字字母、下划线组成且不能有大写字母和特殊字

符,且key不能由数字开头,这是由于Hive对列名的限制。

D.regexp_extract(stringINITIAL_STRING,stringPATTERN,stringREPLACEMENT)会按

照Java正则表达式PATTERN将字符串INTIAL_STRING中符合条件的部分成

REPLACEMENT所指定的字符串,如里REPLACEMENT这空的话,抽符合正则的部

分将被去掉。$n:regexp_extract("foobar","oo|ar","")='fb1注意些预定义字符的使用,

如第二个参数如果使用门将被匹配到s;\\s,才是匹配空格。

72)关于Hive内置函数描述错误的是()。(单选)

A.avg(col),表示求指定列的平均值,avg(DISTINCTcol)表示求去重后的列的平均值

B.explode(MAP)将hive一列中map结构拆分成多行,转换后每行对应每个map键-值,

其中一个字段是map的键,另一个字段是map的值。

C.split(stringstr,stringpat)会按照正则表达式pat来分割字符串str,并将分割后的数组字

符串的形式返回。

D.substring(string|binaryA,intstart,intend)对于二进制/字符串A,从start位置开始截取到

end位置的字符串并返回

学习知识点后请完成以下练习题

73)下面哪个不属于Hive自定义函数()。(单选)

A.UDF

B.UDAF

C.UDGF

D.UDTF

74)下面关于自定义UDF函数描述错误的是()。(单选)

A.需要继承org.apache.hadoop.hive.ql.exec.UDF

B.要实现evaluate()方法

C.UDF必须要有返回类型,可以返回null,但是返回类型不能为void;

D.需要把自定义UDF函数的程序打成jar包上传到服务器,将jar包添加到Hive的c

lasspath后就可以直接调用。

75)下面关于自定义UDAF函数描述正确的是()•(单选)

A.自定义聚合函数必须结合groupby使用,接受。行到多行数据返回一个计算结果值。

需继承org.apache.hadoop.hive.ql.exec.UDAF,并定义内部表类,实现UDAFEva

luator»

B.UDAFEvaluator类的实现中,iterate()功能是每次都会对一个新的值进行聚合计

算时时都调用该方法,一般会根据计算结果更新用来存放最终结果的变量,如果计算正

确或者输入值合法就返回最终结果。

C.UDAFEvaluator类的实现中,terminatePartial()这个方法直译过来就是“终止

部分”,部分聚合结果的时候调用该方法必须返回一封装了聚合计算当前状态的对象,

类似于MapReduce的combiner,常常直接调用iterate()进行部分聚合。

D.以上选项全错。

76)下面关于自定义UDTF函数描述错误的是()。(单选)

A.自定义UDTF函数必须结合LATERALVIEW使用,将一列中复杂的array或者map结

构拆分成多行。需继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,

实现实现三个方法initialize。、process。、close。。

B.UDTF首先会调用initialize。方法,此方法返回UDTF的返回行的信息(返回字段

个数与名称,类型)。

C.初始化完成后调用process()方法,对传入的参数进行处理,可以通过forward。

方法把结果返回。

D.最后调用close。对需要清理的方法进行清理。

77)下面关于临时函数与永久函数描述错误的是()。(单选)

A.自定义函数有2种使用方式:临时函数和永久函数。临时函数只能在当前客户端使用,

仅对当前session有效。永久函数,创建后可以在任意客户端使用。

B.创建永久函数与创建临时函数实现都是四个步骤,步骤前两步一样,后面步骤不一样。

创建永久函数需要把jar放到HDFS上,而创建临时函数只需将jar放到hive服务器

本地;在Hive的命令行窗口创建函数格式不一样

C.创建完永久函数之后,通过showfunctions可能并没有看到我们自定义的永久函

数,但是可以使用,而且推荐使用I永久函数。

D.以上不全对

学习知识点后请完成以下练习题

78)从选课表course中统计学生的人数查询语句为:"selectcount(distinct*)entfrom

course;

A.正确

B.错误

79)已知employee表中position字段为array类型,要查看每位员工的第一职位的查询语

句为:"selectposition[l]fromemployee;"。

A.正确

B.错误

80)Hive采用了类SQL的查询语言HQL(hivequerylanguage),Hive的查询语言与MySQL

完全一致。

A.正确

B.错误

81)关于Hive查询语法描述错误的是()。(单选)

A.HiveSQL语言大小写不敏感

B.HiveSQL可以写在一行或多行,各子句一般分行写,换行时行尾加上“\”

C.各子句一般分行写,使用缩进提高语句的可读性

D.以上不全对

82)下面查询语句错误的是()。(单选)

A.selectstu_noenamefromscore;

B.selectcount(*)entfromscore;

C.selectscore*0.5asscore_lfromscore;

D.以上不全对

学习知识点后请完成以下练习题

83)下列关于分组描述错误的是()。(单选)

A.GROUPBY语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,

然后对每个组执行聚合操作

B.having只用于groupby分组统计语句,having语句先筛选出合乎条件的数据然后

再groupby分组

C.having后面可以使用分组函数

D.以上不全对

84)关于连接描述错误的是()。(单选)

A.Hive支持通常的SQLJOIN语句,但是只支持等值连接,不支持非等值连接

B.如果连接语句中有WHERE子句,会先执行WHERE子句,再执行JOIN子句

C.使用别名可以简化查询语句,使用表名前缀可以提高执行效率

D.连接谓词中不支持or,可以使用unionall,并去重的方法代替,使用COLLECT_SET()

函数来封装不需要groupby的字段。

85)关于连接描述错误的是()。(单选)

A.,■fromtableltlrightjointable2t2ontl.id=tl.id”表示右外连接,

JOIN操作符右边表中的所有记录将会被返回,左边表的指定字段没有符合条件的值的

话,那么就使用null值替代。

B."fromtableltlleftjointable2t2ontl.id=表示左连接,JOIN

操作符左边表中的所有记录将会被返回,右边表的指定字段没有符合条件的值的话,那

么就使用null值替代。

C.”fromtableltlinnerjointable2t2"表示内连接,只有进行连接的两个

表中都存在与连接条件相匹配的数据才会被保留下来。

D.”fromtableltlfulljointable2t2ontl.id=tl.id”表示满外连接,

将会返回所有表中的所有记录。如果任一表的指定字段没有符合条件的值的话,那么就

使用NULL值替代。

86)下面哪一个选项与其它三个不等价()。(单选)

A.selecte.empno^e.enamefromempeleftjoindeptdone.deptno=

d.deptno;

B.selecte.empno,e.enamefromempewheree.deptnoin(selectdeptno

fromdept);

C.selecte.empno>e.enamefromempewhereEXISTS(select1fromdept

dwheree.deptno=d.deptno);

D.selecte.empno,e.enamefromempejoindeptdone.deptno=d.deptno;

87)“FROMempeJOINdeptdONd.deptno=e.deptnoJOINlocation1ON

d.loc=1.loc”会先启动一个MapReducejob对表e和表d进行连接操作,然后会

再启动一个MapReducejob将第一个MapReducejob的输出和表1进行连接操作。

A.正确

B.错误

学习知识点后请完成以下练习题

88)关于查询语句中全局排序说法描述错误的是()。(单选)

A.使用orderby会对输入做全局排序,转换为MapReduce程序中某阶段只有一个

reducer(多个reducer无法保证全局有序),而只有一个reducer,会导致当输入规模较

大时,需要较长的计算时间。

B.使用ORDERBY子句排序,默认升序,ORDERBY子句在SELECT语句的结尾。

C在hive.mapred.mode=strict模式下,必须指定limit否则执行会报错。

D.以上不全对

89)下列哪个说法不正确()o(单选)

A.orderby可以按照别名排序,也可以根据多个列排序

B.DISTRIBUTEBY语句进行分区,类似MR中partition,SORTBY语句在分区内进

行排序,Hive要求DISTRIBUTEBY语句要写在SORTBY语句之前。

C.当distributeby和sortsby字段相同时,可以使用clusteredby方式代替它

们。但是clusteredby排序只能是升序排序,不能指定排序规则为ASC或者DESC。

D.以上不全对

90)关于分桶表数据存储,下列哪个说法不正确()。(单选)

A.分区针对的是数据的存储路径;分桶针对的是数据文件。

B.分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合

理的分区,特别是之前所提到过的要确定合适的划分大小这个疑虑。分桶是将数据集分

解成更容易管理的若干部分的另一个技术。

C.导入数据到分桶表中,发现并没有分成4个桶,原因可能是未设置hive.enforce.

bucketing=true和mapreduce.job.reduces="l«

D.以上选项不全对

91)关于分桶抽样查询,下列哪个说法不正确()。(单选)

A.对于非常大的数据集,有时用户需要使用的是一个具有代表性的查询结果而不是全部

结果。Hive可以通过对表进行分桶抽样来满足这个需求。

B.使用tablesample抽样语句可以对分桶表进行抽样,语法:TABLESAMPLE(BUCKETx

OUTOFy)0

C.如果某个分桶表总bucket数为4,tablesample(bucket6outof8)表示总共抽取(4/8=)

1/2个bucket的数据,抽取第2个bucket中后一半的数据。

D.以上不全对

92)在orderby全局排序下,所有数据会到一台服务器进行reduce操作,即只

有一个reduce,如果在数据量大的情况下会出现无法输出结果的情况,如果

进行了limitn,那只有n*mapnumber条记录而已。只有一个reduce

也可以处理过来。

A.正确

B.错误

学习知识点后请完成以下练习题

93)关于with...as...语句说法描述错误的是()。(单选)

A.with...as...需要定义一个sql片段,会将这个片段产生的结果集保存在内存中,后续的

sql均可以访问这个结果集,作用与视图或临时表类似。

B.with...as...得到的结果集是一次性的,只在同一HQL语句里有效。

C.with...as...语句提高代码可读性(结构清晰),而且简化sql,优化执行速度(with子句只

需要执行一次)。

D.以上不全对

94)关于行转列说法描述错误的是()。(单选)

A.CONCAT(stringA/col,stringB/col-):返回输入字符串连接后的结果,支持

任意个输入字符串,每一个参数可以是表中某列或者是某一个具体的字符串。

B.CONCAT_WS(separator,strl,str2,…):它是一个特殊形式的CONCAT()»第

一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是

NULL,返回值也将为NULLo这个函数会跳过分隔符参数后的任何NULL和空字符串。

分隔符将被加到被连接的字符串之间。

C.COLLECT_SET(C01):函数只接受基本数据类型,它的主要作用是将某字段的值进行

去重汇总,产生array类型字段,实现行转列的功能,经常与CONCAT_WS-"起使用。

D.以上不全对

95)关于列转行说法描述错误的是()。(单选)

A.EXPLODE(col):explode是将hive一列中复杂的array或者map结构拆分成多行,

只针对array和map两种数据结构有效。但是select使用UDTF做查询的过程中查询

只能包含单个UDTF,不能包含其它字段以及多个UDTF的情况。

B.LATERALVIEW主要解决在select使用UDTF做查询的过程中查询只能包含单个

UDTF,不能包含其它字段以及多个UDTF的情况。lateralview首先将utdf函数应

用到每一行上,这时每一行经utdf处理后得到多行输出,这些输出将会组建成一张虚

拟表,然后这张虚拟表会跟当前表进行join操作,join完成之后会得出一张结果虚

拟表,这张结果表里就有了utdf生成的列,当然原表的列除了utdf消耗的列之外肯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论