• java会吗?不会。。。。。
  • hdfs读文件写文件的流程
    数据写入
    1-客户端向NameNode发起请求
    2-NameNode审核权限和剩余空间,满足条件即允许写入,并告知客户端写入的DataNode地址
    3-客户端向指定的DataNode发送数据包
    4-被写入数据的DataNode同时完成数据副本的复制工作,将其接收到的数据分给其他DataNode
    5-DataNode1复制给2,2复制给3,4
    6-写入完成后客户端会通知NameNode,NameNode负责做好元数据记录工作(edits和fsimage)
    关键点:
    1-NameNode不负责数据写入,只负责元数据记录和权限审批
    客2-户端直接向一台DataNode写入数据,这个DataNode通常是离客户端最近的一个
    3-数据块副本的复制工作由DataNode自行完成,别的节点不参与
    数据读取
    1-客户端想NameNode申请读取文件
    2-NameNode判断客户端权限等细节信息,允许其进行读取,返回此文件的block列表(存储节点位置)
    3-客户端拿到block列表后到DataNode寻找并读取即可
    关键点:
    1-数据不由NameNode直接提供
    2-NameNode提供的block列表,会基于网络距离计算尽量给客户端返回最近的哪一个
    3-因为一个块通常由三个备份,所以可以去寻找最近的一个,通常是通过IP地址和路由表推断其网络距离。
  • map reduce 两阶段shuffle
    1、map结果写入环形内存缓冲区,当内存不足以存储所有数据时,将数据批量溢写到磁盘。为了尽量减少IO消耗,所以在数据写入磁盘之前会先写入缓冲区,待缓冲区达到阈值后才批量将数据写入磁盘
    2、partition分区。在数据写入磁盘之前会先进行分区,一个分区对应一个reducer,期望数据在多个reducer之间达到均衡
    3、排序(sort)和合并(combine)。数据经过分区之后,先按照key进行排序,如果用户指定了Combiner,再进行combine操作
    4、溢写(spill)。经过排序和合并之后的数据会写入磁盘文件,每次spill都会产生一个文件。一个分区上的文件也叫一个segment
    5、归并(merge)。一个map最终会生成一个磁盘文件,由于多次spill会产生多个文件,所以需要将这些文件进行merge,最终形成一个有序的大文件。merge过程中有可能遇到相同key的数据,如果用户设置了Combiner,会执行combine操作
    以上1-5是map阶段的shuffle,以下是reduce阶段的shuffle步骤
    6、拷贝(copy)。当某个map完成后,reduce不断拉取map生成的文件到ruduce。和map阶段一样先将数据写入环形内存缓冲区,当达到阈值时,将数据批量溢写到磁盘
    7、排序(sort)和归并(merge)。sort是伴随copy动作时执行的,由于map的输出是有序的,所以copy是进行sort消耗很低。当溢写数据到磁盘之前,如果用户设置了Combiner会先进行combine,然后将数据写入磁盘文件。当接受完map数据会生成多个溢写磁盘文件,将这些文件归并merge,合并成一个有序的大文件

原文链接:https://blog.csdn.net/momo898821/article/details/104847599

  • hive内部表外部表区别
    在这里插入图片描述
    在这里插入图片描述

  • hive全量表,增量表,快照表,拉链表
    全量表:记录每天的所有的最新状态的数据,有无变化都要上报,每次往全量表里面写数据都会覆盖之前的数据
    缺点:不能记录数据的历史变化,只能截止到当前最新、全量的数据
    增量表:记录每天的新增的数据和改变的数据
    快照表:按日分区,记录截止数据日期的全量数据(每个分区都是记录截止当前分区日期的全量数据)。
    优点:可以反映历史的变化
    缺点:在数据量大的情况下,每个分区存储的都是全量数据,数据冗余和浪费存储空间
    拉链表:
    1、概念
    记录一个事物从开始,一直到当前状态的所有变化的信息。(极限存储)
    优点:能够解决快照表数据冗余问题,还能维护数据历史状态和最新状态,记录截止数据日期的全量数据
    2、拉链表的使用场景
    缓慢变化维SCD(表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等;表中的记录变化的比例和频率不是很大,比如,总共有10亿的用户,每天新增和发生变化的有200万左右,变化的比例占的很小。)
    数据量很大(比如一张用户表,大约10亿条记录,50个字段,这种表,即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的话就更大一些;需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态)

  • spark宽窄依赖
    宽依赖就是一个父亲rdd被多个子rdd使用,会发生shuffle操作,对应的rdd算子有reducebykey,groupbykey,窄依赖就是一个父亲rdd被一个子rdd依赖,经常做转换传递等操作,对应的rdd算子例如map,filter。同时每出现一个宽依赖,会划分一个新的stage。

  • spark常用算子,那些会引起shuffle
    groupByKey():父 RDD 所有分区中相同 key 的数据需汇总到子 RDD 的同一分区(多对 1 依赖)。
    reduceByKey(f):按 key 聚合,需收集父 RDD 多个分区的相同 key 数据(多对 1 依赖)。
    sortByKey():按 key 排序,需全局重排,依赖父 RDD 所有分区。
    distinct():去重需全局比较,依赖父 RDD 所有分区。
    repartition(n):重新分区(无论增减),需 Shuffle(多对多依赖)。

‌ReduceByKey‌:
同时实现‌分组与聚合‌功能,需传入自定义聚合函数(如累加、求极值等)。
返回类型为RDD[(K, V)],每个键对应聚合后的单一值。‌‌

‌GroupByKey‌:
仅实现‌键值分组‌功能,不执行聚合。
返回类型为RDD[(K, Iterable[V])],每个键对应原始值的迭代器。‌‌

‌数据处理流程‌
‌ReduceByKey‌:
‌Shuffle前预聚合‌:在各分区内对相同键值执行局部聚合(Combiner阶段)。
‌Shuffle阶段‌:仅传输预聚合后的中间结果。
‌全局聚合‌:在Reduce端合并各分区的预聚合结果。‌‌

‌GroupByKey‌:
‌直接Shuffle‌:未经预处理的全量键值对直接跨节点传输。
‌分组阶段‌:在Reduce端收集所有相同键值

原文链接:https://blog.csdn.net/2301_76971522/article/details/149782100

  • order by sort by distribute by和cluster by的区别
    ORDER BY
    ‌全局排序‌:对整个结果集进行排序,仅允许一个Reducer处理数据,因此效率较低,适用于小数据量场景。 ‌
    ‌模式限制‌:在严格模式下(hive.mapred.mode=strict),必须指定LIMIT或分区条件,否则执行会报错。 ‌
    SORT BY
    ‌局部排序‌:在Reducer内部对数据进行排序,不保证全局有序。 ‌
    ‌多Reducer支持‌:可设置多个Reducer(如mapreduce.job.reduces=n),每个Reducer处理局部有序数据。 ‌
    DISTRIBUTE BY
    ‌数据分区‌:通过hash算法将数据分发到不同Reducer,类似MR中的Partition。 ‌
    ‌结合SORT BY‌:通常与SORT BY联合使用,先分区再局部排序。 ‌
    CLUSTER BY
    ‌组合功能‌:当DISTRIBUTE BY和SORT BY的字段相同时,CLUSTER BY可同时完成分区和排序。 ‌
    ‌排序限制‌:仅支持升序排序(默认),不支持降序或自定义排序规则。 ‌

  • 数据仓库的特点,4个
    面向主题,可集成,随时间变化,稳定

  • 数仓分层,简单介绍
    结合实习经历

  • 数据仓库和数据库的区别

  • 星型模型和雪花模型

  • 事实表和维度表怎么区分

  • 一道思考题
    有一张电影表movie,里面包含电影id :movie_id,日期:dt,票房:box,求某个电影过去一周票方,一日电影票房,每个电影每日电影票房,存在一张hive表里面,能一次取出三个粒度的数据,怎么设计?

-- 每日每个电影票房
SELECT'daily' as type,movie_id,dt,SUM(box) as box_sum
FROM movie
WHERE dt >= date_sub(current_date, 7)
GROUP BY movie_id, dtUNION ALL-- 某个电影过去一周票房
SELECT'movie_week' as type,movie_id,NULL as dt,SUM(box) as box_sum
FROM movie
WHERE dt >= date_sub(current_date, 7)
GROUP BY movie_idUNION ALL-- 全部电影过去一周票房
SELECT'all_week' as type,NULL as movie_id,NULL as dt,SUM(box) as box_sum
FROM movie
WHERE dt >= date_sub(current_date, 7);

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

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

相关文章

数据清理后续

前篇:Python 项目里的数据清理工作(数据清洗步骤应用) 一,先接上文添加两种数据填充的方法 1、线性回归填充 def lr_train_fill(train_data,train_label):train_data_all pd.concat([train_data, train_label], axis1)train_d…

nuc设置脚本开机自启动

在终端执行gnome-session-properties这个是带有图型化页面的设置开机自启动的软件没有这个软件的可以直接下载sudo apt update sudo apt install gnome-startup-applications一般都有,ubunutu自带的右边有添加,名称和注释随便写,只需要把命令…

JavaScript 性能优化实战大纲

JavaScript 性能优化实战大纲 核心优化方向 减少主线程阻塞 避免长任务(Long Tasks)拆分计算密集型操作使用 Web Workers 处理后台任务优先使用 requestIdleCallback 或 requestAnimationFrame 内存管理 避免内存泄漏(如未清理的定时器、闭包…

openssl生成自签名证书的方法

因为开发中查询过各种命令,失败过很多次,所以记录一下正确的命令: 生成私钥-不要密码 openssl genpkey -algorithm RSA -out ssl/key.pem 生成自签名证书 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -…

电影购票+票房预测系统 - 后端项目介绍(附源码)

电影购票预测系统 - 后端项目介绍 项目概述 本项目是一个基于Spring BootVue的前后端分离电影购票系统,包含完整的前台用户功能和后台管理功能,并提供数据可视化和电影预测功能。本文档将详细介绍后端项目的架构、功能模块、技术栈和使用方法。 项目源…

专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)

专利服务系统平台 目录 基于java和小程序的专利服务系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#x…

【HTML】3D动态凯旋门

目录 版本1.0:简易版本 版本2.0:建筑渲染 版本3.0:优化建筑群 版本4.0:增加公路和车流 版本5.0:去除压在公路上的建筑 版本6.0:优化车流群 版本7.0:添加烟花效果 版本8.0:添…

(论文阅读)FedViT:边缘视觉转换器的联邦持续学习

FedViT:边缘视觉转换器的联邦持续学习 FedViT: Federated continual learning of vision transformer at edge (北京理工大学-2023年发表于《Future Generation Computer Systems》中科院二区) highlight: •提出一种轻量级的客户端联合持续学习方法。 •…

微算法科技(NASDAQ: MLGO)研究利用PBFT中的动态视图变换机制,实现区块链系统高效运转

随着区块链技术的飞速发展,其去中心化、透明性、不可篡改等特性使得它在金融、供应链管理、物联网等多个领域得到了广泛应用。然而,区块链系统在高并发场景下的性能瓶颈问题一直是制约其大规模应用的关键因素。传统的共识算法如PoW(工作量证明…

从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略

引言:从 “提取数据” 到 “洞察价值”,SQL 进阶之路 在掌握了基础查询与多表关联后,你是否曾遇到这样的挑战:如何按部门统计平均薪资?怎样找出每个岗位薪资最高的员工?或者如何计算销售额的月度环比增长率…

Spring 和 Lettuce 源码分析 Redis 节点状态检查与失败重连的工作原理

关键步骤:Spring Boot 启动时创建 LettuceConnectionFactory根据配置类型(集群/哨兵/单机)初始化客户端对于集群模式:创建 RedisClusterClient调用 setOptions(getClusterClientOptions(configuration)) 应用配置2. 节点状态检查机…

从ChatGPT到智能助手:Agent智能体如何颠覆AI应用

从ChatGPT到智能助手&#xff1a;Agent智能体如何颠覆AI应用 更多大模型知识分享&#xff0c;尽在>>>GitHub<<< Agent 智能体是什么 简单来说&#xff0c;Agent 智能体是一种能够感知环境&#xff0c;并根据自身目标自主采取行动的智能实体。它就像是一个拥…

Spring Boot应用实现图片资源服务

在这篇文章中&#xff0c;我们将介绍如何使用Spring Boot创建一个REST API来提供服务器上的静态图片资源。该API包括路径安全检查、文件存在性验证以及缓存控制等功能&#xff0c;并且代码包含详细的注释以帮助理解。Maven依赖 首先&#xff0c;在您的pom.xml文件中添加以下依赖…

Word 中 MathType 公式编号问题与解决

注&#xff1a;本文为 “Word 中 MathType 公式编号” 相关合辑。 图片清晰度受引文原图所限。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 【Word】解决 MathType 已插入公式按新章节开始编号的问题 Allan326 于 2020-03-25 15:30:08 发布 问题…

19. 大数据-产品概念

文章目录前言一、数据库1. 简介2. 使用场景3. 数据库类型4. 数据类型二、数据仓库1. 简介2. 使用场景3. 数据仓库架构三、数据平台1. 简介2. 使用场景3. 数据仓库架构四、数据中台1. 简介2. 使用场景3. 数据中台架构五、数据湖1. 简介2. 使用场景3. 数据湖架构六、总结1. 区别2…

python学习DAY46打卡

DAY 46 通道注意力(SE注意力) 内容&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插入的位置通道注意…

Ansible 中的文件包含与导入机制

Ansible 中的文件包含与导入机制本文介绍了在 Ansible 中如何通过模块化方式管理复杂的 Playbook&#xff0c;包括使用 include 和 import 系列语句来拆分和重用代码。概述 当 Playbook 变得冗长或复杂时&#xff0c;可以将其拆分为多个小文件以提高可管理性。Ansible 提供了模…

OpenCV-循环读取视频帧,对每一帧进行处理

原型代码 内存模型&#xff1a; 核心变量&#xff1a;frame&#xff0c;Numpy ndarray&#xff0c;每次会被覆盖&#xff0c;大小保持恒定import cv2video_path your_video.mp4cap cv2.VideoCapture(video_path)if not cap.isOpened():print("Cant open Video")exi…

决策树的学习(二)

一、整体框架本 PPT 聚焦机器学习中的决策树算法&#xff0c;围绕 “核心算法&#xff08;ID3、C4.5、CART&#xff09;→ 特殊问题&#xff08;连续值处理&#xff09;→ 优化策略&#xff08;剪枝&#xff09;→ 代码实现→ 课堂练习” 展开&#xff0c;系统补充决策树的进阶…

粗粮厂的基于spark的通用olap之间的同步工具项目

粗粮厂的基于spark的通用olap之间的同步工具项目1 项目背景2 项目实现2.1 实现原理2.2 细节要点3 抽样说明4 项目运行状态4.1 运行速度4.2 项目吞吐4.3 稳定性说的比较简单&#xff0c;有需要的可以留言&#xff0c;我不断补充完善1 项目背景 我们公司内部的需要一款&#xff…