大数据第二阶段测试

大数据第二阶段测试

一、简答题

  1. Flume 采集使用上下游的好处是什么?

参考答案一
-上游和下游可以实现解耦,上游不需要关心下游的处理逻辑,下游不需要关心上游的数据源。
-上游和下游可以并行处理,提高整体处理效率。
-可以实现数据的分发和负载均衡,提高系统的稳定性和可扩展性。

参考答案二
- 可以很方便地将多个数据源的数据汇聚到一起,然后发送到下游的存储/计算系统中。
- 可以很容易地在 Flume agent 之间传递 event,实现更复杂的拓扑结构。
- 可以通过 Source、Channel、Sink 的灵活组合,实现不同的采集需求。
- 可以在 Flume 层面对数据流进行过滤、聚合等处理,减少下游系统的压力。

  1. Flume 中对于 Channel 的选型怎么做考虑?

参考答案一
-内存 Channel:适合数据量较小、实时性要求高的场景。
-文件 Channel:适合数据量较大、可靠性要求高的场景。
-JDBC Channel:适合将数据实时写入数据库的场景。
-MemoryMapped Channel:适合数据量大且需要持久化的场景。

参考答案二
- 存储容量和可扩展性
- 性能,包括吞吐量和事件写入/读取延迟
- 可靠性
- 持久化需求
- 多 Agent 情况下是否支持事务

  1. Flume 采集如何解决零点漂移问题?

参考答案一
-使用可靠性 Channel,如文件 Channel,保证数据在传输过程中的可靠性。
-设置合适的事务超时时间,防止数据传输过程中出现长时间的等待。
-配置合适的重试策略,如设置重试次数和重试间隔时间。

参考答案二
- 使用时间戳插件TimestampInterceptor在Flume事件头中插入时间戳
- 使用Taildir Source读取新增文件,根据文件名判断时间
- 使用自定义Interceptor根据内容解析时间戳

  1. DataX如何做到数据的增量采集?

参考答案一
-使用 DataX 的增量采集方式,如配置增量字段和增量查询条件。
-根据增量字段的值,判断是否需要采集该条数据。
-保存增量字段的最大值,下次采集时使用该值作为查询条件。

参考答案二
- 利用参数 incrementalRead 开启增量读模式
- 在 增量检测阶段,根据用户配置的 增量键,扫描目的表与增量状态表,过滤已存在的数据
- 在 增量同步阶段,使用增量键将源端新的数据同步到目的端
- 更新 增量状态表,保存增量键的状态

  1. Json数据的入仓有哪几种方案,分别是什么?

参考答案一
-使用 Hive 的 JSON SerDe,将 JSON 数据直接存储到 Hive 表中。
-使用 Spark 的 DataFrame API,将 JSON 数据转换为 DataFrame,并存储到 Hive 或其他数据源中。
-使用 Flume 将 JSON 数据采集到 Hadoop/HDFS 中,然后使用 Hive 或 Spark 进行处理和存储。

参考答案二
- 直接Load: 使用JsonSerDe解析Json,直接Load到Hive表中。
- 预处理:使用Spark、MapReduce 等进行Json解析,处理为结构化数据后再Load到hive。
- 使用Hive JSON函数:使用get_json_object、json_tuple等函数解析json。

  1. Hive 的行转列,列转行如何实现

参考答案一
-行转列:使用 Hive 的 Lateral View 和集合函数,如 explode、posexplode,将一行数据拆分为多行,每行包含一列。
-列转行:使用 Hive 的 Unpivot 操作,将多列数据合并为一列,可以使用 Lateral View 和 UDTF 函数实现。

参考答案二
- 列转行:使用 lateral view explode() 函数。
- 行转列:使用 pivot 进行,需要指定转列的字段、输出列名、聚合函数。

  1. Hive 建表的过程中如何设置数据格式?

参考答案一
-在创建表时,可以通过指定字段的数据类型来设置数据格式,如 INT、STRING、DECIMAL、TIMESTAMP 等。
-可以使用 Hive 的 SerDe(序列化和反序列化)来自定义数据格式,如 CSV、JSON、Avro 等。

参考答案二
- 创建表时使用STORED AS指定存储格式,如STORED AS ORC
- 创建表时使用ROW FORMAT 指定行格式,如ROW FORMAT DELIMITED
- 创建分区时使用FILEFORMAT指定分区文件格式

  1. 内部表和外部表一般怎么去做选择?

参考答案一
-内部表:数据存储在 Hive 的默认位置,删除表时会同时删除数据。适合管理不频繁的临时数据。
-外部表:数据存储在外部目录中,删除表时不会删除数据。适合对外部数据进行管理和查询。

参考答案二
- 临时表用内部表,数据会在删除表时删除。
- 业务事实表等需要hive管理生命周期的使用内部表。
- 对外统一提供数据访问的表使用外部表,数据存放在外部位置。
- 需作为其他系统数据源的using外部表,prevent drop data

  1. SparkETL 中有哪些过程,都怎么实现?

参考答案一
-数据抽取:从数据源中读取数据,可以使用 Spark 的 DataFrame、RDD、Streaming 等 API。
-数据清洗:对数据进行过滤、转换、去重等操作,可以使用 Spark 的转换操作和自定义函数。
-数据转换:将数据格式转换为目标格式,如将结构化数据转换为 JSON 或 Parquet 格式。
-数据加载:将处理后的数据写入到目标数据源,如 Hive、HDFS、关系型数据库等。

参考答案二
- 数据抽取:从数据源读取数据,封装为DataFrame
- 数据转换:对DataFrame进行各种转换,清洗、补全、修改数据
- 数据加载:将处理后的数据写入目标存储系统
实现方式是通过Spark SQL,Dataframe API进行业务转换,最后写入存储系统。

  1. 多维分析如何实现,有哪些方法?

参考答案一
-使用 OLAP(联机分析处理)工具,如 Kylin、ClickHouse、Presto 等,可以对大规模数据进行多维分析。
-使用数据仓库和数据集市,通过事实表和维度表的关联,使用 SQL 进行多维分析查询。
-使用数据可视化工具,如 Tableau、Power BI 等,将数据以可视化的方式展示出来,进行多维分析。

参考答案二
- OLAP多维立方:使用OLAP工具构建多维Cube,进行多维分析。
- Hive多维分析:在Hive中建立Fact和Dimension表,使用Cube、Rollup、Grouping Sets实现多维聚合。
- Spark SQL pivoting: 使用grouping sets、rollup、cube实现多维聚合。

  1. Spark算子Map和MapPartition的区别是什么?

参考答案一
-Map 算子是对 RDD/DataFrame/Dataset 中的每个元素进行单独的操作,可以对每个元素应用一个函数。
-MapPartition 算子是对 RDD/DataFrame/Dataset 中的每个分区进行操作,可以对每个分区应用一个函数。
-MapPartition 比 Map 算子效率更高,因为它减少了函数调用的开销。但是需要注意,MapPartition 算子可能会导致内存溢出,因为它处理的是整个分区的数据。

参考答案二
- Map 对RDD每个分区的数据应用转换函数。MapPartition对每个分区作为整体应用转换函数。
- Map 针对RDD的每个元素进行转换,函数输入是单个元素。MapPartition以分区为单位,输入是迭代器。
- Map任务数和RDD分区数相同。MapPartition任务数等于RDD分区数。

  1. 漏斗分析模型,有什么作用,计算思路是什么?

参考答案一
-漏斗分析模型用于分析用户在一个流程中的转化情况,可以发现流程中的瓶颈和优化点。
-计算思路:统计每个步骤的用户数量,然后计算每个步骤之间的转化率。可以使用 SQL 或编程语言实现。

参考答案二
漏斗分析可以衡量用户从进入网站特定页面到达成交的转换率,识别转化路径中的堵点。
其计算思路是:
- 根据事件时间顺序,识别用户访问的各个页面
- 计算相邻页面之间的用户流失率
- 按照流失率高低找出转化路径的漏斗

  1. 数仓是怎么分层的,具体思路是什么?

参考答案一
数仓一般分为原始层、清洗层、集市层和报表层。
-原始层:存储原始数据,不做任何处理。
-清洗层:对原始数据进行清洗、过滤、去重等操作。
-集市层:对清洗后的数据进行加工和整合,构建维度模型。
-报表层:根据业务需求进行数据汇总、统计和可视化。

参考答案二
- ODS层:操作数据存储层,用于存放原始数据。
- DWD层:数据仓库存放层,对ODS层数据进行清洗、去重复、校验等处理。
- DWS层:数据集市层,对DWD层数据进行汇总、加工生成分析数据集。
- ADS层:应用数据存储层,存放生成报表及模型分析所需的数据集。

  1. HiveSQL 如何向SQL中传参?

参考答案一
-可以使用 Hive 的变量(Variable)来传递参数,如使用 ${var_name} 的方式引用变量。
-在执行 HiveSQL 之前,可以使用 SET var_name=value 的方式设置变量的值。

参考答案二
- 使用变量 substitute 参数
- 使用 --hivevar 定义参数,SQL中使用 ${hivevar:name}引用
- 设置参数配置文件,SQL中使用 ${hivedvar:name} 引用

  1. DolphinScheduler 任务调度失败了后续的处理步骤是什么?

参考答案一
-DolphinScheduler 会根据任务的重试策略进行重试,直到达到最大重试次数。
-如果任务重试失败,则会将任务状态设置为失败,触发后续的失败处理流程。
-失败处理流程可以根据配置进行自定义,如发送通知、触发报警、记录日志等。

参考答案二
- 发送钉钉、邮件通知相关负责人
- 检查日志,分析失败原因,如资源不足、业务数据问题等
- 重试任务执行或修复失败原因后手动触发重试
- 如果非系统问题,需要更新任务方案,重新发布上线

  1. SQL 的优化有哪些方式?

参考答案一
-使用合适的索引,可以加快查询的速度。
-对查询语句进行优化,如使用合适的连接方式、减少子查询的使用、优化 WHERE 条件等。
-对数据表进行分区、分桶,可以提高查询性能。
-使用合适的缓存机制,如使用 Redis 缓存查询结果。
-使用合适的硬件设备,如使用 SSD 替代传统的机械硬盘。

参考答案二
- 使用explain分析执行计划,针对问题进行优化
- 加入索引,提高查询速度
- SQL改写,简化查询逻辑
- 参数调优,合理配置内存、并发等参数
- 使用分区、分桶改善数据存取
- 使用视频、序列等提升查询性能

二、编码题

1.

(1)

(2)

(3)

(4)

2.

3.

(1)

(2)

(3)

(4)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/31395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三维重建】【深度学习】instant-nsr-pl代码Pytorch实现--训练自己的数据集

【三维重建】【深度学习】instant-nsr-pl代码Pytorch实现–训练自己的数据集 基于Instant-NGP的神经表面重建:该存储库包含 NeRF 和 NeuS 的简洁且可扩展的实现,用于基于 Instant-NGP 和 Pytorch-Lightning 框架的神经表面重建,旨在为基于 Ne…

力扣初级算法(旋转矩阵)

力扣初级算法(旋转矩阵) 每日一算法:旋转矩阵 学习内容: 1.问题: 给你一幅由 N N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到? 2.…

vue+springboot基于web的火车高铁铁路订票管理系统

铁路订票管理系统按照权限的类型进行划分,分为用户和管理员两个模块。管理员模块主要针对整个系统的管理进行设计,提高了管理的效率和标准。主要功能包括个人中心、用户管理、火车类型管理、火车信息管理、车票预订管理、车票退票管理、系统管理等&#…

如何在Python中使用结构模式匹配

在Python 3.10中引入的模式匹配语法允许在应用程序中使用强大的新编程技术进行决策。Python虽然功能强大且广受欢迎,但长期以来缺乏其他语言中的一种流程控制方式,即以一种优雅的方式将一个值与多个可能的条件进行匹配。在C和C中,这是通过构造…

uniapp-----封装接口

系列文章目录 uniapp-----封装接口 uniapp-----分包 文章目录 系列文章目录 uniapp-----封装接口 uniapp-----分包 文章目录 前言 一、技术 二、封装步骤 1.准备 ​编辑 2.代码填充 request.js: api.js: min.js 页面使用 总结 前言 uni…

mysql索引的数据结构(Innodb)

首选要注意,这里的数据结构是存储在硬盘上的数据结构,不是内存中的数据结构,要重点考虑io次数. 一.不适合的数据结构: 1.Hash:不适合进行范围查询和模糊匹配查询.(有些数据库索引会使用Hash,但是只能精准匹配) 2.红黑树:可以范围查询和模糊匹配,但是和硬盘io次数比较多. 二…

vue : 无法加载文件 C:\Users\…\npm\vue.ps1,因为在此系统上禁止运行脚本。

在 PowerShell 中创建 vue 项目时,出现了以下错误导致创建失败:vue : 无法加载文件 C:\Users\…\npm\vue.ps1,因为在此系统上禁止运行脚本。 报错原因 用户权限不足导致无法加载文件,以管理员身份运行终端或者 PowerShell 也可…

Go异常处理机制panic和recover

recover 使用panic抛出异常后, 将立即停止当前函数的执行并运行所有被defer的函数,然后将panic抛向上一层,直至程序crash。但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃,recover只有被defer后才是有意义的。 func main() { p…

Maven安装与配置

目录 一、Maven简介1.1 概述1.2 作用1.3 仓库 二、安装三、配置3.1 配置环境变量3.2 环境变量测试3.3 配置仓库 一、Maven简介 1.1 概述 Maven是一个开源的项目管理工具,用于构建和管理Java项目,基于项目对象模型(POM)的概念。它…

面试八股文Mysql:(1)事务实现的原理

1. 什么是事务 事务就是一组数据库操作,这些操作是一个atomic(原子性的操作) ,不可分割,要么都执行,要么回滚(rollback)都不执行。这样就避免了某个操作成功某个操作失败&#xff0…

CSS的使用

一、隐藏 1、文本隐藏 /*文本隐藏*/ .text-hidden{white-space: nowrap;overflow: hidden;text-overflow: ellipsis; } /*文本隐藏&#xff0c;悬浮显示*/ .text-hidden:hover{width: auto!important; }二、浮动样式 1、显示、隐藏浮动div <!DOCTYPE html> <html …

C++学习笔记总结练习:动态内存

动态内存 存在的问题&#xff1a;栈空间和堆空间的分配也是运行时内存分配&#xff0c;即动态内存分配。文字常量区、全局变量和静态变量区是在编译时内存分配&#xff0c;即静态内存分配。 栈空间的动态内存分配由操作系统管理。堆空间的动态内存分配由用户自身管理。二者可以…

putty使用记录

在官网下载并安装putty 一、SSH 二、FTP open 192.168.1.118 put -r C:\Users\Administrator\Desktop\test /opt/lanren312/test # 上传&#xff08;文件夹&#xff09; get -r /opt/lanren312/test C:\Users\Administrator\Desktop\test2 # 下载&#xff08;文件夹&#xff…

gray_dilation_rect

灰度图膨胀。图像的宽度和高度不变。 下面创建一个3*3的灰度图&#xff0c;左上角为1&#xff0c;右下角为3&#xff0c;其它为0。 byte[] barr new byte[9]; barr[0] 1; barr[8] 3; var img WHCSHalCon.Base.CreateByteImage(barr,…

Android Studio实现图形验证码

源代码 源代码MainActivity 效果图32行需要修改&#xff0c;不修改会报错&#xff1a;需要常量表达式&#xff0c;我的代码已修改 点击后 MainActivity import static com.example.graphicverificationcode.RxCaptcha.TYPE.NUMBER;import android.annotation.SuppressLint; …

获取 Android 的 SHA1 值

1、调试版&#xff0c;可以直接在 Android studio 中的 gradle 中查看。也可以用下面方法进行 前提要先确定签名文件所在的路径&#xff1a;调试版默认使用的签名文件是debug.keystore&#xff0c;文件处于 C 盘用户目录下的.android文件夹下。打开命令行工具&#xff0c; 1、…

Uniapp使用腾讯地图并进行标点创建和设置保姆教程

使用Uniapp内置地图 首先我们需要创建一个uniapp项目 首先我们需要创建一个uniapp项目 我们在HBuilder左上角点击文件新建创建一个项目 然后下面这张图的话就是uniapp创建项目过程当中需要注意的一些点和具体的操作 然后我们创建完项目之后进入到项目pages文件夹下&#xff…

Android 13 Launcher界面——移除Launcher的删除和卸载功能

目录 一.背景 二.将卸载功能进行屏蔽 三.将移除功能屏蔽 四.将Remove按钮与Uninstall按钮屏蔽

web-csrf

目录 CSRF与XSS的区别&#xff1a; get请求 原理&#xff1a; pikachu为例 post请求 pikachu为例 CSRF与XSS的区别&#xff1a; CSRF是借用户的权限完成攻击&#xff0c;攻击者并没有拿到用户的权限&#xff0c;而XSS是直接盗取到了用户的权限 get请求 原理&#xff1a;…

新法!《个人信息保护合规审计管理办法(征求意见稿)》解读

8月3日&#xff0c;依据《中华人民共和国个人信息保护法》等法律法规&#xff0c;国家互联网信息办公室起草了《个人信息保护合规审计管理办法&#xff08;征求意见稿&#xff09;》&#xff08;下文简称“办法”&#xff09;&#xff0c;并向社会公开征求意见。 据悉&#xff…