Hive+Flume+Kafka章节测试六错题总结

题目2:

EXTERNAL关键字的作用?[多选]

A、EXTERNAL关键字可以让用户创建一个外部表

B、创建外部表时,可以不加EXTERNAL关键字

C、通过EXTERNAL创建的外部表只删除元数据,不删除数据

D、不加EXTERNAL的时候,默认创建内部表也叫管理表

【参考答案】: ACD

【您的答案】: ABC

external关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(location),在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive会(或多或少地)控制着数据的生命周期。所以ACD选项是正确的,不加external是内部表,B选项错误。

题目3:

对as和like的描述正确的是?[多选]

A、as可以将查询结果添加到新创建的表中

B、like根据已经存在的表结构创建表

C、as针对数据,like针对结构

D、as和like的作用一样

【参考答案】: ABC

【您的答案】: BC

根据查询结果创建表(查询的结果会添加到新创建的表中)

  • hive (default)>create table if not exists student2 AS select id, name from student;

这个就是将查询结果添加到新创建的表中,所以A选项正确。

题目7:

聚合函数sum()over(...order by cu),中order by描述正确的是? [单选题]

A、只要开窗中如果使用order by ,有累加功能,默认等于UNBOUNDED PRECEDING and current row

B、在聚合函数后,开窗中如果使用order by ,有累加功能,默认等于UNBOUNDED PRECEDING and current row

C、在非聚合函数后,开窗中如果使用order by ,有累加功能,默认等于UNBOUNDED PRECEDING and current row

D、在聚合函数后,开窗中如果无论是否使用order by ,都具有累加功能,默认等于UNBOUNDED PRECEDING and current row

【参考答案】: B

【您的答案】: A

B、在聚合函数后,开窗中如果使用order by,有累加功能,默认等于UNBOUNDED PRECEDING and current row。

在使用聚合函数后,如果在开窗函数中使用ORDER BY子句,它会定义用于计算累积的顺序,通常是按照某个列的值排序。默认情况下,它等同于UNBOUNDED PRECEDING and current row,这意味着对当前行及其之前的所有行进行累加操作。这允许你在窗口中根据指定的排序顺序对聚合函数进行计算。

题目12:

下列关于减少topic的分区数的描述正确的是?[单选题]

A、可以减少,使用命令sub进行移除。

B、可以减少,使用命令alter进行修改。

C、不可以减少,因为是一旦创建就不能改变的。

D、不可以减少,被删除的分区数据难以处理。

【参考答案】: D

【您的答案】: C

D、不可以减少,被删除的分区数据难以处理。

分区数一旦创建后通常是不可以减少的。删除分区会导致删除数据,这些数据难以恢复,因此通常情况下,分区数的减少是不允许的。如果需要减少分区数,通常需要创建一个新的表或数据集来满足新的需求,并迁移数据到新表中,而不是修改现有的分区数。

题目13:

下列关于Exactly Once语义中描述错误的是?[单选题]

A、当ack=-1,可以保证数据不会丢失。

B、当ack=0,可以保证数据不会重复。

C、当ack=1,即可以保证数据不会重复,也可以保证数据不会丢失。

D、幂等性无法保证跨分区跨会话的Exactly Once。

【参考答案】: C

【您的答案】: B

C、当ack=1,只能保证数据不会丢失,但无法保证数据不会重复。A选项,当ack=-1时,默认数据是不会丢失的。B选项,当ack等于0时,数据只会发送一次,不需要等待回复确认,可以保证数据不会重复。D选项,如果生产者中途宕机,然后重新建立会话时,不能保证不同会话时PID是一样,这时候重新发送重复数据时无法保证幂等性。

C选项,只能保证数据不会丢失,不能保证数据不会重复的问题。

题目15:

下列关于kafka 造成数据丢失的场景描述正确的是?[多选题]

A、ack=0时,leader故障有可能丢失数据。

B、ack=1时,在follower同步成功之前leader故障,将会丢失数据。

C、ack=-1时,在follower同步完成后,broker发送ack之前,leader发生故障,可能会丢失数据。

D、ack=-1时,在follower同步完成前,broker发送ack之后,leader发生故障,可能会丢失数据。

【参考答案】: AB

【您的答案】: ABD

ack=-1时,不会丢数据,所以C, D 错误

题目17:

配置Metastore到MySql的说法正确的是? [单选题]

A、默认数据库derby容量太小

B、为了能够实现多窗口启动hive

C、为了使用JDBC的方式连接Hive

D、默认数据库也能实现hive多窗口启动

【参考答案】: B

【您的答案】: C

在某些情况下,为了支持多个Hive客户端同时连接到Hive Metastore,需要将Metastore配置为使用外部数据库,如MySQL。这是因为默认的Derby数据库通常只支持单个连接,这意味着只能有一个Hive客户端会话在同一时间连接到Hive Metastore。通过将Metastore配置为使用外部数据库,可以允许多个Hive客户端并发连接到Metastore,实现多窗口启动Hive。

题目21:

Hive中对Parquet格式描述正确的是?[多选]

A、Parquet文件是以二进制方式存储的,所以是不可以直接读取的

B、文件中包括该文件的数据和元数据,因此Parquet格式文件是自解析的。

C、可以把每一个行组由一个Mapper任务处理,增大任务执行并行度

D、在Parquet中,有三种类型的页:数据页、字典页和索引页

【参考答案】: ABCD

【您的答案】: BC

A选项:Parquet文件是以二进制方式存储的,所以是不可以直接读取的,从某个角度来说不是很准确,是可以读取和解析的,但解释为不可以直接读取也是正确的。

D选项:正确,就是这三种类型。

题目23:

Hive中对本地模式描述正确的是?[多选]

A、Hive可以通过本地模式在单台机器上处理所有的任务

B、对于小数据集,执行时间可以明显被缩短。

C、用户可以通过设置hive.exec.mode.local.auto的值为true,来让Hive在适当的时候自动启动这个优化,默认是false。

D、设置local mr的最大输入数据量,当输入数据量小于这个值时采用local mr的方式,默认为134217728,即128M

【参考答案】: ABCD

【您的答案】: ABD

C选项是正确的,存在该参数,在hive/conf/hive-default.xml.template文件中可以查看到该参数的默认情况,默认为false。

xml 复制代码
<property>
    <name>hive.exec.mode.local.auto</name>
    <value>false</value>
    <description>Let Hive determine whether to run in local mode automatically</description>
  </property>

题目24:

Hive中对推测执行描述正确的是?[多选]

A、为了避免,一个作业的多个任务之间运行速度不一致,一个慢的任务会拖慢作业的整体执行进度这种情况,Hadoop采用了推测执行(Speculative Execution)机制。

B、根据一定的法则推测出"拖后腿"的任务,并为这样的任务启动一个备份任务,让该任务与原始任务同时处理同一份数据,并最终选用最先成功运行完成任务的计算结果作为最终结果。

C、Hadoop的mapred-site.xml文件中进行配置,mapreduce.map.speculative默认是true

D、hive本身也提供了配置项来控制reduce-side的推测执行:hive.mapred.reduce.tasks.speculative.execution默认是true

【参考答案】: ABCD

【您的答案】: ACD

C 选项,在mapred-default.xml文件总找到了该参数,默认确实为true。

xml 复制代码
<property>
  <name>mapreduce.map.speculative</name>
  <value>true</value>
  <description>If true, then multiple instances of some map tasks
               may be executed in parallel.</description>
</property>

D选项, 在hive/conf/hive-default.xml.template文件中确实存在配置项来控制推测执行,正确。

xml 复制代码
<property>
    <name>hive.mapred.reduce.tasks.speculative.execution</name>
    <value>true</value>
    <description>Whether speculative execution for reducers should be turned on. </description>
  </property>

题目25:

Hive中对动态分区描述正确的是?[多选]

A、对分区表Insert数据时候,hive自动会根据分区字段的值,将数据插入到相应的分区中,但需要进行相应的配置。

B、开启动态分区功能(默认true,开启)hive.exec.dynamic.partition=true

C、在所有执行MR的节点上,最大一共可以创建多少个动态分区。默认1000

D、整个MR Job中,最大可以创建多少个HDFS文件。默认100000

【参考答案】: ABCD

【您的答案】: ACD

B选项,在hive/conf/hive-default.xml.template文件中可以确定动态分区功能默认是开启的。

xml 复制代码
<property>
    <name>hive.exec.dynamic.partition</name>
    <value>true</value>
    <description>Whether or not to allow dynamic partitions in DML/DDL.</description>
  </property>

题目26:

Hive中对内外表描述正确的是?[多选]

A、可以通过desc formatted table 来查询表的类型

B、修改内部表xxx为外部表alter table xxx set tblproperties('EXTERNAL'='TRUE');

C、修改外部表xxx为内部表alter table xxx set tblproperties('EXTERNAL'='FALSE');

D、('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写

【参考答案】: ABCD

【您的答案】: AD

A、可以通过 desc formatted table 来查询表的类型。这是正确的,可以使用此命令来查看表的详细信息,包括表的类型(内部表或外部表)。

B、修改内部表为外部表的语法是使用以下命令:

sql 复制代码
ALTER TABLE xxx 
SET TBLPROPERTIES('EXTERNAL'='TRUE');

这个命令是正确的,它将内部表修改为外部表。

C、修改外部表为内部表的语法是使用以下命令:

sql 复制代码
ALTER TABLE xxx 
SET TBLPROPERTIES('EXTERNAL'='FALSE');

这个命令是正确的,它将外部表修改为内部表。

D、('EXTERNAL'='TRUE')('EXTERNAL'='FALSE') 是用于设置表属性的键值对,它们不是固定写法,而是用来指示表的类型的。这些键值对的大小写是敏感的,所以区分大小写是正确的。

所以正确的选项是 A、B、C 和 D。

相关推荐
howard200517 小时前
Hive实战任务 - 9.3 实现学生信息排序和统计
hive·排序·汇总·学生信息
番茄撒旦在上17 小时前
什么样的表适合做拉链表
大数据·数据仓库·hive
howard200517 小时前
Hive实战任务 - 9.5 实现网址去重
hive·网址去重
howard200518 小时前
Hive实战任务 - 9.4 分科汇总求月考平均分
hive·分科汇总月考平均分
山沐与山19 小时前
【MQ】Kafka与RocketMQ深度对比
分布式·kafka·rocketmq
howard200519 小时前
Hive实战任务 - 9.2 统计总分与平均分
hive·统计总分与平均分
yumgpkpm20 小时前
Cloudera CDP7、CDH5、CDH6 在华为鲲鹏 ARM 麒麟KylinOS做到无缝切换平缓迁移过程
大数据·arm开发·华为·flink·spark·kafka·cloudera
树下水月21 小时前
Easyoole 使用rdkafka 进行kafka的创建topic创建 删除 以及数据发布 订阅
分布式·kafka
Cat God 00721 小时前
基于Docker搭建kafka集群
docker·容器·kafka
Cat God 00721 小时前
基于 Docker 部署 Kafka(KRaft + SASL/PLAIN 认证)
docker·容器·kafka