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。

相关推荐
清平乐的技术专栏6 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
csding118 小时前
写入hive metastore报问题Permission denied: user=hadoop,inode=“/user/hive”
数据仓库·hive·hadoop
saynaihe9 小时前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
隔着天花板看星星10 小时前
Spark-Streaming集成Kafka
大数据·分布式·中间件·spark·kafka
神秘打工猴16 小时前
hive常用函数有哪些
hive
太阳伞下的阿呆18 小时前
kafka常用命令(持续更新)
分布式·kafka
BUTCHER51 天前
Kafka安装篇
分布式·kafka
lucky_syq1 天前
Hive与HBase的区别有哪些
hive·hadoop·hbase
若雨叶1 天前
Kafka实现监听多个topic
分布式·kafka
HaoHao_0101 天前
云消息队列 Kafka 版
分布式·阿里云·kafka·云计算·云服务器