草庐IT

hive数据仓库课后答案

晁晁我呀最讨厌期末了 2023-10-29 原文

第一章 数据仓库的简介

一、填空题

1.数据仓库的目的是构建面向    分析        的集成化数据环境。

2.Hive是基于    Hadoop        的一个数据仓库工具。

3.数据仓库分为3层,即     源数据层           数据应用层       和数据仓库层。

4.数据仓库层可以细分为     明细层         中间层        和业务层。

5.在数据仓库建设中,一般会围绕着   星状模型     和雪花状模型来设计数据模型。

二、判断题

1.数据仓库是以业务流程来划分应用程序和数据库。                            (     错    )

2.数据仓库中的数据一般是很少更新的。                                          (  对   )

3.数据仓库模型中星状模型和雪花状模型都属于维度建模。             (     对     )

4.Hive可以将非结构化的数据文件映射为一张数据表。                 (       错   )

5.从Hive 0.14开始支持事务。                                             (    对     )

三、选择题

1.下列选项中,属于数据仓库特点的是(    C    )。

       A.面向对象的

       B.时效的

       C.数据集成的

       D.面向数据的

2.下列选项中,不属于数据Hive架构组成部分的是?(    D    )

       A.Compiler

       B.Optimizer

       C.Thrift Server 

       D.HiveServer2

3.下列选项中,对于Hive工作原理说法错误的是(   A      )。

       A.Driver向MetaStore获取需要的元数据信息

       B.Driver向Compiler发送获取计划的请求

       C.Driver向execution engine提交执行计划

       D.execution engine负责与HDFS与MapReduce的通信

4.下列选项中,不属于Hive支持的集合数据类型是(     C   )。

       A.ARRAY

       B.MAP

       C.LIST

       D.STRUCT

四、简答题

1.简述数据仓库分层的源数据层、数据仓库层和数据应用层的执行流程。

        首先,源数据层采集并存储的数据来源于不同的数据源,然后,通过ETL(抽取-转换-加载)的方式将清洗和转换后的数据装载到数据仓库层,最终,数据应用层根据实际业务需求从数据仓库层中获取数据实现报表展示、数据分析或数据挖掘等操作。

第二章 Hive数据仓库应用

一、填空题

1.克隆虚拟机时,与原始虚拟机不共享任何资源的克隆方式是   完整克隆     。

2.网卡设置为静态路由协议后,需要添加参数DNS1、  IPADDR        NETMASK         GATEWAY     

3.密钥文件id_rsa和 id_rsa.pub分别是     私钥   文件    公钥    文件。

4.Centos7初始化系统环境的命令是   ifcfg-ens33     

5.规划Zookeeper集群中服务器数量的公式为    2n+1    

二、判断题

1.Zookeeper集群可以存在多个Follower和Leader。                             (     错    )

2.2888表示Leader选举过程中的投票通信端口。                                  (     错    )

3.Hadoop的高可用集群需要两个NameNode和两个ResourceManager。  (      对    )

4.在嵌入模式下运行Hive时,会在当前目录下生成元数据文件。       (      对    )

5.在启动HiveServer2服务的同时也会默认启动Metastore服务。         (      对    )

三、选择题

1.下列选项中,正确启动Zookeeper服务的命令是(     C    )。

       A.start zkServer.sh

       B.start zookeeper

       C.zkServer.sh start

       D.start zookeeper.sh

2.下列选项中,不属于Hadoop高可用集群进程的是?(    D    )

       A.DFZKFailoverController

       B.JournalNode

       C.QuorumpeerMain

       D.Master

3.下列选项中,关于部署Hive说法正确的是(     B    )。

       A.本地模式部署的Hive不支持元数据共享

       B.远程模式部署的Hive支持元数据共享

       C.HiveServer2不支持多客户端连接

       D.Hive客户端工具Beeline可以远程连接单独启动的Metastore服务

四、简答题

1.简述SSH服务的作用。

        (1)、可以通过远程连接工具连接虚拟机,便于虚拟机的操作。

        (2)、可以实现免密登录功能,避免集群各节点间频繁访问需要输入密码,影响服务器的连续运转。

五、操作题

1.通过修改主机名的命令将虚拟机Node_01的主机名修改为hello。

hostnamectl set-hostname hello

第三章 Hive的数据定义语言

一、填空题

1.操作Hive时,默认使用的数据库   default          

2.若需要同时删除数据库和数据库中的表,则需要在删除数据库的语句中添加    CASCADE     

3.分区主要是将表的整体数据根据业务需求,划分成多个子目录来存储,每个子目录对应一个              分区          

4.索引是一种以空间换取         时间       的方式。

5.临时表只对当前会话可见,数据被存储在用户的    临时    目录,并在会话结束时     删除         

二、判断题

1.当删除外部表时,外部表的元数据和数据文件会一同删除。               (   错      )

2.查看表结构信息语法中,DESCRIBE要比DESC查看的信息更加详细。    (    错     )

3.分区表中的分区字段名称不能与分区表的列名重名。                     (      对    )

4.分桶表可以根据多列进行分桶。                                     (    错     )

三、选择题

1.下列选项中,不属于Hive内置Serde的是(     A    )。

       A.FIELD TERMINATED BY

       B.COLLECTION ITEMS TERMINATED BY

       C.MAP KYS TERMINATED BY

       D.NULL DEFINED AS

2.下列选项中,下列关于Hive分桶表描述错误的是(    BD    )。

       A.创建分桶表是可以不指定排序列

       B.分桶表不能与分区表同时使用

       C.分桶个数决定分桶表的存储目录下生成小文件的数量

       D.分桶表中指定分桶的列需要与排序的列保持一致

3.下列选项中,关于视图说法错误的是(      B  )。

       A.视图是只读的

       B.视图包含数据文件

       C.创建视图时无法指定列的数据类型

       D.视图是通过查询语句创建的

四、简答题

1.简述索引如何避免扫描全表数据。

        在涉及索引列的查询时,首先会去索引表中查找索引列的值在HDFS对应的数据文件路径以及索引列的值在数据文件中的偏移量,通过这两个值去扫描全表的部分数据,从而避免全表扫描。

五、操作题

1.在数据库hive_database中创建外部表external_test,关于外部表external_ test的结构要求如下:

(1)要求数据文件存储位置为/test/hive/external_ test

(2)外部表external_ test包含5列,这5列的数据类型分别是STRING、INT、FLOAT、ARRAY和MAP,并自定义列名。

(3)指定数据类型为ARRAY的列中元素的数据类型为STRING。

(4)指定数据类型为MAP的列中每个键值对KEY:VALUE的数据类型为STRING:INT。

CREATE  TABLE IF NOT EXISTS 
hive_database.external_test(
col1 INT,
col2 STRING,
col3 FLOAT,
col4 ARRAY<STRING>,
col5 MAP<STRING, INT>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ':'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY '-'
STORED AS textfile
LOCATION '/test/hive/external_test';

2.在数据库hive_database中创建与外部表external_test表结构一致的分区表partitioned_test,指定文件存储位置为/test/hive/partitioned_ test,在分区表中创建两个分区字段,自定义分区字段的名称和数据类型。

CREATE  TABLE IF NOT EXISTS 
hive_database.partitioned_test(
col1 INT,
col2 STRING,
col3 FLOAT,
col4 ARRAY<STRING>,
col5 MAP<STRING, INT>
)
PARTITIONED BY (
col6 STRING,
col7 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ':'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY '-'
STORED AS textfile
LOCATION '/test/hive/partitioned_test';

第四章 Hive数据操作语言

一、填空题

1.加载文件是将文件中的  结构化      数据加载到指定的Hive数据表中

2.在Hive中可以通过     静态分区      、动态分区和混合分区的方式向分区表中加载数据。

3.查询插入可分为         单表插入         、多表插入和本地插入。

4.IMPORT和EXPORT分别代表           导入             和      导出      。

5.在使用Hive动态分区前,需要修改Hive的配置参数hive.exec.dynamic.partition.mode为      nonstrict     

二、判断题

1.Hive中加载文件只能加载HDFS文件系统中的文件。                                    (    错    )

2.LOCATION子句可以将数据文件中的数据加载到数据表。                                (     错    )

3.本地插入是将本地系统文件中的数据插入到数据表。                              (   错      )

4.多表插入是将多个表的查询结果插入到多张表。                                  (  对       )

5. 保证插入数据表列的数量与查询数据表列的数量一致。                   (      对    )

三、选择题

1.下列选项中,关于插入数据的语句书写正确的是(    A    )。

       A.INSERT INTO TABLE table1 VALUES (11);

       B.INSERT INTO TABLE table2 VALUES (user01);

       C.INSERT INTO TABLE table3 VALUES (11,20)(22,30);

       D.INSERT INTO TABLE table3 VALUES (user01),(user02);

2.下列选项中,关于查询数据的语句书写正确的是(     B   )。

       A.SELECT username city FROM table1;

       B.SELECT * FROM table1;

       C.SELECT username FROM table1 WHERE province;

       D.SELECT username FROM table1 WHERE province=ShanDong;

四、简答题

1.简述通过LOAD DATA语句向指定数据表加载数据文件时的注意事项。

文件分隔符需要与数据表的字段分隔符保持一致。

文件换行符需要与数据表的行分隔符保持一致。

文件中的集合数据与数据表的集合元素分隔符保持一致。

文件中的键值对数据与创建数据表时指定键值对的分隔符保持一致。

文件中每个字段的顺序需要与数据表中字段的顺序保持一致

文件的字段数量需要与数据表的字段数量保持一致。

2. 简述动态分区与混合分区的区别。

        动态分区加载数据时只需要指定分区字段即可,混合分区加载数据时必须指定一个分区包含分区字段和分区字段值,其它分区可以直接使用分区字段即可。

五、操作题

1. 将本地文件系统目录/export/data/hive_data中的文件test.txt加载到分区表partitioned_table的二级分区province=ShanDong/city=HeZe。

LOAD DATA LOCAL INPATH '/export/data/hive_data/test.txt' INTO TABLE partitioned_table PARTITION (province='ShanDong', city='HeZe');

第五章 Hive数据查询语言

一、填空题

1.SELECT句式中分组操作的子句是    GROUP    BY

2.复杂运算符S.x 支持的数据类型是    STRUCT    。

3.公用表表达式是一个临时 结果集      

4.    UNION    语句用于将多个SELECT句式的结果合并为一个结果集。

5.抽样查询分为数据块抽样、   随机抽样     和   分桶抽样     

二、判断题

1.LIMIT子句用于限制查询表的行数据。                                   ( 对)

2.DISTINCT子句可以对查询结果进行去重。                                   ( 对 )

3.关系运算符RLIKE支持所有基本数据类型。                          ( 错 )

4.分组操作会发出MapReduce任务进行处理。                           ( 对 )

5.JOIN语句中LEFT OUTER JOIN和LEFT JOIN所表达的意思相同。         (  对)

三、选择题

1.下列选项中,不属于关系运算符的是( B)。

       A.!=

       B.!

       C.NOT LIKE

       D.LIKE

2.下列选项中,关于分组操作的描述正确的是( D)。

       A.空值不会进行分组处理

       B.GROUP BY子句执行顺序在SELECT语句之后

       C.使用GROUP BY子句时,在SELECT语句中只能出现聚合函数不能出现列

       D.GROUP BY子句中的列需要与SELECT语句中的列保持一致

四、简答题

1.简要描述左外连接、右外连接、全外连接和内连接的关联方式。

内连接:根据关联列将左表和右表中能关联起来的数据连接后返回,返回的结果就是两个表中所有相匹配的数据。

左外连接:根据关联列保留左表完全值,若右表中存在与左表中匹配的值,则保留;若右表中不存在与左表中匹配的值,则以NULL代替。

右外连接:根据关联列保留右表完全值,若左表中存在与右表中匹配的值,则保留;若左表中不存在与右表中匹配的值,则以NULL代替;

全外连接:根据关联列返回左表和右表中的所有数据,若关联不上则以NULL代替。

2. 简述SORT BY子句和ORDER BY子句的区别。

ORDER BY用来对查询结果做全局排序,查询的结果集只会交由一个Reducer处理。

SORT BY用来对查询结果做局部排序,根据MapReduce默认划分Reducer个数的规则,将查询结果集交由多个Reducer处理。

第六章 Hive函数

一、填空题

1.Hive自定义函数分为即UDF、     UDTF   和   UDAF     

2.将指定列中的数据组合为数组,去重复数据的函数是  COLLECT_SET      。

3.编写UDTF程序时需要继承类     GenericUDTF   

4.使用    侧视图    时可以为表生成函数指定列的别名。

二、判断题

1.UDF表示用户自定义聚合函数。                                       (  错)

2.ROUND()函数返回0~1的随机值。                                      ( 错 )

3.CONCAT()函数按顺序拼接字符串,没有分隔符。                     ( 对 )

4.TRIM()函数用于拆分字符串。                                       ( 错 )

三、选择题

1.下列选项中,不属于字符串函数的是( D)。

       A.RPAD()

       B.REPEAT()

       C.SUBSTR()

       D.COALESCE()

2.下列选项中,属于数学函数的是(C )。

       A.SUM()

       B.COUNT()

       C.NEGATIVE ()

       D.BINARY()

四、简答题

1.简述字符串函数CONCAT()和CONCAT_WS()的区别。

        CONCAT()按照顺序对字符串进行拼接,没有分隔符。

        CONCAT_WS()按照指定分隔符对字符串进行拼接。

2.简述字符串函数COLLECT_SET()和COLLECT_LIST()的区别。

        COLLECT_SET()将指定列中的数据组合为数组,去重复数据。

        COLLECT_LIST()将指定列中的数据组合为数组,不去重复数据。

五、操作题

1. 创建UDF程序实现比较两列数值是否相等,若比较的两列数值不相等,则输出两列数值中较小的值,以及两列数值相加的计算结果。

public class hiveUDF extends UDF {
    public String evaluate(int col1,float col2){
        if (col1>col2){
            return "min:"+col2+",diffe:"+(col1+col2);
        }else if(col1<col2){
            return "min:"+col1+",diffe:"+(col2+col1);
        }else {
            return "0";
        }
    }
}

第七章 Hive事务

一、填空题

1.Hive事务表中的数据会被分成两种类型的文件,即基础文件和   增量文件     

2.开启Hive事务时必须指定Compactor的工作线程数大于等于    1    。

3.Hive事务表的文件存储格式必须为    ORC    

4.Hive通过HiveServer2中运行的一组后台进程    compacter    实现事务的支持。

二、判断题

1.Hive默认开启事务的支持。                                           ( 错)

2.更新Hive事务表数据操作的列必须在事务表中已存在。                   (  对)

3.删除Hive事务表数据操作时,若不指定条件,则无法执行。            (  错)

三、选择题

1.下列选项中,不属于事务四大特性的是(D )。

       A.原子性

       B.隔离性

       C.持久性

       D.容忍性

四、简答题

1.简述基础文件和增量文件的作用。

        基础文件用于存放Hive事务表中的原始数据;增量文件用于存储Hive事务表存储的新增、更新和删除的数据

五、操作题

1. 将事务表tran_clustered_table中员工姓名为user03的员工id更新为010,并且年龄更新为33。

UPDATE hive_database.tran_clustered_table 
SET age = 33,id="010" 
WHERE name = "user03";

第八章 Hive优化

一、填空题

1.文件存储格式ORCFile的使用方式是     行列存储   

2.Hive默认的文件存储格式是  TextFile      

3.ORCFile自身支持两种压缩,分别是   ZLIB         SNAPPY    

4.参数hive.exec.parallel用于配置   并行执行     。

二、判断题

1.笛卡儿积JOIN只能使用一个Reduce处理。                              (  对)

2.ORCFile文件存储格式可以通过LOAD语句加载数据。                   (  错)

3.参数mapred.map.tasks主要用于减少Map个数。                       (  错)

三、选择题

1.下列选项中,用于配置MapReduce压缩的参数是(B )。

       A.mapreduce.map.input.compress

       B.hive.exec.compress.intermediate

       C.mapreduce.fileoutputformat.compress.codec

       D.mapreduce.output.fileoutputformat.type

四、简答题

1.简述配置合并文件的作用。

        每个数据文件都会交给一个Map去处理,如果存在多个小数据文件,那么会每个小数据文件都会启动一个Map,造成不必要的资源浪费,因此在Map执行之前应该将这些小数据文件进行合并

五、操作题

1. 创建外部表test,自定义表的列,要求表的文件存储格式为ORCFile,并指定表的压缩格式为ZLIB。

CREATE TABLE test(
col1 STRING,
col2 STRING,
col3 STRING
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS ORC 
TBLPROPERTIES ("orc.compress"="ZLIB");

有关hive数据仓库课后答案的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  3. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  7. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  8. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  9. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  10. 微信小程序通过字典表匹配对应数据 - 2

    前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立

随机推荐