Spark常问面试题---项目总结
一、数据清洗,你都清洗什么?或者说 ETL 你是怎么做的?
我在这个项目主要清洗的式日志数据,日志数据传过来的json格式
去除掉无用的字段,过滤掉json格式不正确的脏数据
过滤清洗掉日志中缺少关键字段的数据(如缺少用户名,设备型号,等)
过滤清洗掉日志中不符合时间段的记录(由于app上日志上报有延迟等)
对用户的特殊信息进行脱敏,身份证,手机号等
将简单的的数据标准化(用户传过来的数据,经清洗后写入表格)
将重复的数据去重等(如session分割)
二、hive 和 spark 如何关联,关联过程中容易出现什么问题?
如何在DataGrip上使用hive的数据源编写Spark代码_datagrip配置spark-CSDN博客
如何关联:
启动hive的HiveMetaStore服务(hive-server-manager.sh start metastore)
设置spark的日志级别
启动spark的链接服务(10000端口hive在用,可以将spark的端口更改为10001)
遇到的问题:
hive中的数据库和sparksql中的数据库不是同一个,spark指向了本地的而不是集群的hdfs
链接之后,创建库表,上传数据后去集群的mysql中查看dbs中看这个库指向的是hdfs还是本地
需要修改hive的配置文件,然后复制到sparkconf然后分发集群重启就行
三、hive 如何处理 json 数据?
两个方法:
1、将数据视为无结构的string,将传入的json数据看作一条数据然后在hive建表上传
然后使用get_json_object函数
select get_json_object(line,'$.account') from test_json limit 10;
2、json格式进行映射(这需要jsonSerde的支持),创建表的时候加上ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.JsonSerDe',然后就可读json数据,load就行
hdfs上的数据,导入表中一次后,直接删除,或者叫做移动,所以下一次再导入会说没有这个文件。
3、json_tuple() 可以一次提取多个字段。
select json_tuple('{"action_time":1682219447,"monitor_id":"0001","camera_id":"1","car":"豫A12345","speed":34.5,"road_id":"01","area_id":"20"}','camera_id','road_id','area_id','speed') as (cameraid,roadid,areaid,speed);
四、你的这个 spark 离线数仓的项目的项目架构图,请简单描述一下


数据经flum的抽取,将各个埋点的日志数据传入hive(进行处理sparksql处理)作为ods层,然后对ods层的数据进行清洗脱敏等然后当作tmp临时表,然后将tmp表进行合并生成dwd公共数据明细层,然后以dwd为基础,按天进行轻度汇总,粒度是一行信息代表的行为,例如一天下单的次数,以dws数据层为基础,按主题进行汇总,一个项目可以分为很多的主题,进行汇总,例如某个用户从注册开始到现在下单次数等,ads为各种统计表提供数据。
其中要对整个流程进行调度,监控,权限管理。
五、编写完成的 spark 程序,如何运行?
1、在本地模式运行
编写好的Python代码直接在本地运行
2、在集群环境中运行
编写完成的pyspark程序,上传到虚拟机,要把依赖的文件也上传上去,我这里上传的地址在/home/spark-shell中,然后将jsonsed的依赖jars包拉进去,然后sumit提交spark任务,传入参数,就能运行,在正常的情况下,要把每一py程序写成一个shell脚本,然后任务调度器每天定时调度shell脚本传入日期数据
spark-submit \
--master yarn \
--deploy-mode client \
--conf "spark.pyspark.driver.python=/opt/installs/anaconda3/bin/python3" \
--conf "spark.pyspark.python=/opt/installs/anaconda3/bin/python3" \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 1 \
--num-executors 2 \
--queue default \
/home/spark-shell/AppLogWash.py $dt
六、spark 本地化运行,提示缺包怎么办?集群提示缺包怎么办?
spark本地化运行,提示缺包:
将所缺少的包导入到External libraries下的 site-packages\pyspark\jars下,重启服务
集群提示缺包 解决方案:
1、运行时,添加jar包依赖,需要使用如下方式:
--jars /opt/installs/hive/lib/hive-serde-3.1.2.jar,/opt/installs/hive/lib/hive-common-3.1.2.jar
2、将两个jar包,提交到hdfs上的spark的jars下:
hdfs dfs -put /opt/installs/hive/lib/hive-serde-3.1.2.jar /spark/jars
hdfs dfs -put /opt/installs/hive/lib/hive-common-3.1.2.jar /spark/jars
七、你这个项目中的 session 分割是什么?怎么做?为什么 要做这个呢?
分割的是用户在App的会话信息。因为APP的session往往持续时间比较长,不像浏览器那样,有固定的30分钟,所以对APP上的行为进行会话内的分析是不准确的 当一个行为发生时间相比较上一个行为的时间超过10分钟,则认为用户刚才将APP后台或者退出了,则从该行为开始属于一个新的会话。
怎么做?
先创建一张原始表,将分割前的数据导入进去。

创建一张表,存储session切割之后的结果。
创建一个类AppLogSessionSplit,通过sparksql完成session会话切割操作
每次开发,可以先使用hive 将sql编写正确,然后再在spark中粘贴。
为什么?
通过对用户的行为按照时间进行session会话的切割,可以对设备的行为按照会话级别粒度进行分析,例如一个用户在一次会话中从哪进入了产品,又从哪退出了产品,在一次会话中用户的停留时长,在一次会话中用户访问了多少个页面等
相关文章:
Spark常问面试题---项目总结
一、数据清洗,你都清洗什么?或者说 ETL 你是怎么做的? 我在这个项目主要清洗的式日志数据,日志数据传过来的json格式 去除掉无用的字段,过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据ÿ…...
【AI系统】Auto-Tuning 原理
Auto-Tuning 原理 在硬件平台驱动算子运行需要使用各种优化方式来提高性能,然而传统的手工编写算子库面临各种窘境,衍生出了自动生成高性能算子的的方式,称为自动调优。在本文我们首先分析传统算子库面临的挑战,之后介绍基于 TVM…...
AMEYA360:上海永铭电子全新高压牛角型铝电解电容IDC3系列,助力AI服务器电源高效运转
随着数据中心和云计算的高速发展,AI服务器的能效要求日益提高。如何在有限空间内实现更高的功率密度和稳定的电源管理,成为AI服务器电源设计的一大挑战。永铭推出全新高压牛角型铝电解电容IDC3系列,以大容量、小尺寸的创新特性,为…...
echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip
一.地图立体效果 方法1:两层地图叠加 实现原理:geo数组中放入两个地图对象,通过修改zlevel属性以及top,left,right,bottom形成视觉差 配置项参考如下代码: geo: [{zlevel: 2,top: 96,map: map,itemStyle: {color: #091A51ee,opacity: 1,borderWidth: 2,borderColor: #16BAFA…...
什么是 Socket?
Socket(套接字)是计算机网络编程中的一个重要概念,它用于在不同计算机之间进行通信。Socket 提供了一种机制,使得应用程序可以通过网络发送和接收数据。Socket 通信通常基于 TCP/IP 协议,但也可以使用其他协议…...
【版本控制】SVN安装到使用一条路讲解
文章目录 安装使用 Subversion (SVN) 是一款集中式版本控制系统,广泛应用于团队协作和代码管理中。尽管随着 Git 的兴起,集中式版本控制逐渐被分布式工具取代,但 SVN 仍在许多企业项目中发挥着重要作用。它的简单、稳定和易用特性,…...
KVCKVO
KVC KVC意思是键值编码,是一种可以通过键名来访问对象属性的机制,也可以对属性进行赋值,包括私有属性,由于KVC的定义是对OC中的NSObject的扩展进行实现的,所以如果要使用KVC机制,那么这个类需要继承NSObje…...
PyQt设计界面优化 #qss #ui设计 #QMainWindow
思维导图 通过qss实现ui界面设计优化 Qss是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,它是用来美化UI界面。实现界面和程序的分离,快速切换界面。 首先我们在Pytchram创建一个新目录 然后将我们所需要的图片打…...
Qt Serial Bus 前置介绍篇
文章目录 Qt Serial Bus 简介前言 什么是 Qt Serial Bus?Qt Serial Bus 的核心功能支持的协议1. **CAN 总线**2. **Modbus**3. **自定义协议** 应用场景优势总结 Qt Serial Bus 简介 前言 Qt Serial Bus 是 Qt 框架中的一个模块,用于与工业设备和嵌入式…...
12.2深度学习_项目实战
十、项目实战 鲍勃开了自己的手机公司。他想与苹果、三星等大公司展开硬仗。 他不知道如何估算自己公司生产的手机的价格。在这个竞争激烈的手机市场,你不能简单地假设事情。为了解决这个问题,他收集了各个公司的手机销售数据。 鲍勃想找出手机的特性(例…...
LeetCode 64. 最小路径和(HOT100)
第一次错误代码: class Solution { public:int minPathSum(vector<vector<int>>& grid) {int dp[205][205] {0};int m grid.size(),n grid[0].size();for(int i 1 ;i<m;i){for(int j 1;j<n;j){dp[i][j] min(dp[i][j-1],dp[i-1][j])gr…...
ESP8266作为TCP客户端或者服务器使用
ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为服务端)_esp8266作为station-CSDN博客 ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266 为客户端)_esp8266 sta 连接tcp-CSDN博客…...
C#结合.NET框架快速构建和部署AI应用
在人工智能(AI)的浪潮中,C#作为一种功能强大且类型安全的编程语言,为AI工程开发提供了坚实的基础。C#结合.NET框架,使得开发者能够快速构建和部署AI应用。本文将通过一个简单的实例,展示如何使用C#进行AI工…...
题外话 (火影密令)
哥们! 玩火影不! 村里人全部评论! 不评论的忍战李全保底! 哥们! 密令领了不! “1219村里人集合”领了吗! 100金币! 哥们! 我粉丝没人能上影! 老舅说的…...
蓝桥杯准备训练(lesson1,c++方向)
前言 报名参加了蓝桥杯(c)方向的宝子们,今天我将与大家一起努力参赛,后序会与大家分享我的学习情况,我将从最基础的内容开始学习,带大家打好基础,在每节课后都会有练习题,刚开始的练…...
RTDETR融合[ECCV2024]WTConvNeXt中的WTConv模块及相关改进思路
RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Wavelet Convolutions for Large Receptive Fields》 一、 模块介绍 论文链接:https://arxiv.org/pdf/2407.05848 代码链接:https://github.com/BGU-CS…...
AD7606使用方法
AD7606是一款8通道最高16位200ksps的AD采样芯片。5V单模拟电源供电,真双极性模拟输入可以选择10 V,5 V两种量程。支持串口与并口两种读取方式。 硬件连接方式: 配置引脚 引脚功能 详细说明 OS2 OS1 OS2 过采样率配置 000 1倍过采样率 …...
嵌入式系统应用-LVGL的应用-平衡球游戏 part1
平衡球游戏 part1 1 平衡球游戏的界面设计2 界面设计2.1 背景设计2.2 球的设计2.3 移动球的坐标2.4 用鼠标移动这个球2.5 增加边框规则2.6 效果图2.7 游戏失败重启游戏 3 为小球增加增加动画效果3.1 增加移动效果代码3.2 具体效果图片 平衡球游戏 part2 第二部分文章在这里 1 …...
JVM(四) - JVM 内存结构
目录 一、程序计数器 1.1 作用 1.2 概述 二、虚拟机栈 2.1 概述 2.2 栈的存储单位 2.3 栈运行原理 2.4 栈帧的内部结构 2.4.1. 局部变量表 槽 Slot 2.4.2. 操作数栈 概述 栈顶缓存(Top-of-stack-Cashing) 2.4.3. 动态链接(指向…...
【AI系统】CANN 算子类型
CANN 算子类型 算子是编程和数学中的重要概念,它们是用于执行特定操作的符号或函数,以便处理输入值并生成输出值。本文将会介绍 CANN 算子类型及其在 AI 编程和神经网络中的应用,以及华为 CANN 算子在 AI CPU 的详细架构和开发要求。 算子基…...
跨系统数据搬运总是要靠人工复制粘贴?2026智能体重塑企业数据流转新范式
在2026年的今天,尽管通用人工智能(AGI)已经深度介入生产力环节,但走进多数企业的财务、供应链或人力资源部门,依然能看到员工在多个窗口间频繁切换,机械地重复着CtrlC和CtrlV。这种看似原始的“数据搬运”行…...
AI知识擦除:Gemini3.1Pro能否真正遗忘危险?
概念擦除:能否从 Gemini 3.1 Pro 中删除特定危险知识?——理性看待“遗忘”与“可控”在 2026 年的 AI 热点语境下,“可控”和“可验证”成为讨论主线。除了提升模型能力,人们也更关心另一件事:**当模型掌握了不希望被…...
跟着 MDN 学CSS day_9:(深入掌握CSS选择器核心技能测试)
在Web开发的学习路径中,CSS选择器是构建一切样式体系的基石。无论你是刚入门的新手,还是有一定经验的开发者,对选择器的理解深度直接决定了你能否高效、精准地控制页面元素的样式表现。MDN Web 文档提供了一套经典的"技能测试࿱…...
Autodesk Fusion 360 Linux终极指南:在Ubuntu上运行专业3D建模软件
Autodesk Fusion 360 Linux终极指南:在Ubuntu上运行专业3D建模软件 【免费下载链接】Autodesk-Fusion-360-for-Linux This is a project, where I give you a way to use Autodesk Fusion 360 on Linux! 项目地址: https://gitcode.com/gh_mirrors/au/Autodesk-Fu…...
贝叶斯压缩技术优化空间回归模型计算效率
1. 空间回归模型与贝叶斯压缩概述空间回归模型是分析地理空间数据的核心工具,它通过空间位置信息建模变量间的非平稳关系。传统方法如高斯过程回归虽然灵活,但在处理大规模数据时面临O(N)的计算复杂度瓶颈。贝叶斯数据压缩技术通过随机线性变换实现维度约…...
HTTPS抓包原理与Charles证书信任链实战指南
1. 为什么HTTPS抓包成了测试工程师绕不开的“硬门槛” 2024年我带的三批校招测试新人里,有17个人在第一次模拟面试中被问到“怎么抓APP的HTTPS请求”时当场卡壳。不是不会用Charles,而是根本没意识到—— HTTPS不是“开了代理就能抓”,证书…...
Taotoken控制台的用量看板与账单追溯功能如何助力团队成本管理
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken控制台的用量看板与账单追溯功能如何助力团队成本管理 对于团队管理者或项目负责人而言,将大模型能力整合进业…...
在Python项目中集成多模型API如何利用Taotoken实现统一调用与管理
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Python项目中集成多模型API如何利用Taotoken实现统一调用与管理 1. 多模型接入的常见工程挑战 在开发基于大语言模型的Python应…...
终极小说阅读器:Uncle小说如何一站式解决你的数字阅读需求
终极小说阅读器:Uncle小说如何一站式解决你的数字阅读需求 【免费下载链接】uncle-novel 📖 Uncle小说,PC版,一个全网小说下载器及阅读器,目录解析与书源结合,支持有声小说与文本小说,可下载mob…...
Honey Select 2终极增强补丁:5分钟解锁完整汉化与去码功能
Honey Select 2终极增强补丁:5分钟解锁完整汉化与去码功能 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是《Honey Select 2》游戏的…...
