饿了么大数据开发凉经

1 一个mapreduce进程会启动多少map进程多少reduce进程*

1)map数量由处理的数据分成的block数量决定default_num = total_size / split_size;
2)reduce数量为job.setNumReduceTasks(x)中x 的大小。不设置的话默认为 1。

2 讲下shuffle的过程

shuffle分为map端和reduce端的工作。

MapTask工作机制

(1)Read阶段:Map Task通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。
(2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。
(3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。
(4)Spill阶段:即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。(5)Combine阶段:当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。

ReduceTask工作机制

(1)Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
(2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。
(3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。(4)Reduce阶段:reduce()函数将计算结果写到HDFS上。

3 常见的数据倾斜情况以及解决方案

  • 空值引发的数据倾斜
    解决方案:
    第一种:可以直接不让null值参与join操作,即不让null值有shuffle第二种:因为null值参与shuffle时的hash结果是一样的,那么我们可以给null值随机赋值,这样它们的hash结果就不一样,就会进到不同的reduce中
  • 不同数据类型引发的数据倾斜
    解决方案:
    如果key字段既有string类型也有int类型,默认的hash就都会按int类型来分配,那我们直接把int类型都转为string就好了,这样key字段都为string,hash时就按照string类型分配了
  • 不可拆分大文件引发的数据倾斜
    解决方案:
    这种数据倾斜问题没有什么好的解决方案,只能将使用GZIP压缩等不支持文件分割的文件转为bzip和zip等支持文件分割的压缩方式。
    所以,我们在对文件进行压缩时,为避免因不可拆分大文件而引发数据读取的倾斜,在数据压缩的时候可以采用bzip2和Zip等支持文件分割的压缩算法。
  • 数据膨胀引发的数据倾斜
    解决方案:
    在Hive中可以通过参数 hive.new.job.grouping.set.cardinality 配置的方式自动控制作业的拆解,该参数默认值是30。表示针对grouping sets/rollups/cubes这类多维聚合的操作,如果最后拆解的键组合大于该值,会启用新的任务去处理大于该值之外的组合。如果在处理数据时,某个分组聚合的列有较大的倾斜,可以适当调小该值。
  • 表连接时引发的数据倾斜
    解决方案:
    通常做法是将倾斜的数据存到分布式缓存中,分发到各个Map任务所在节点。在Map阶段完成join操作,即MapJoin,这避免了 Shuffle,从而避免了数据倾斜。
  • 其他情况引发的数据倾斜
    解决方案:
    这类问题最直接的方式就是调整reduce所执行的内存大小。
    调整reduce的内存大小使用mapreduce.reduce.memory.mb这个配置。

4 HBase读写流程*

        HBase读写数据与操作流程https://zhuanlan.zhihu.com/p/373740211

5 星形模型的特点

  • 维度表只和事实表关联,维度表之间没有关联;
  • 每个维度表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
  • 以事实表为核心,维度表围绕核心呈星形分布。

6 常见事实表几种?特点?周期形快照事实表的特点?除了是数值形的还有什么?*

一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)-阿里云开发者社区一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)https://developer.aliyun.com/article/931862#:~:text=1%E3%80%81%E4%B8%89%E7%A7%8D%E4%BA%8B%E5%AE%9E%E8%A1%A8%E6%A6%82%E8%BF%B0%201%201.1%20%E4%BA%8B%E5%8A%A1%E4%BA%8B%E5%AE%9E%E8%A1%A8%20%E4%B9%9F%E7%A7%B0%E5%8E%9F%E5%AD%90%E4%BA%8B%E5%AE%9E%E8%A1%A8%EF%BC%8C%E6%8F%8F%E8%BF%B0%E4%B8%9A%E5%8A%A1%E8%BF%87%E7%A8%8B%EF%BC%8C%E8%B7%9F%E8%B8%AA%E6%8E%A7%E4%BB%B6%E6%88%96%E6%97%B6%E9%97%B4%E4%B8%8A%E6%9F%90%E7%82%B9%E7%9A%84%E5%BA%A6%E9%87%8F%E4%BA%8B%E4%BB%B6%EF%BC%8C%E4%BF%9D%E5%AD%98%E7%9A%84%E6%98%AF%E6%9C%80%E5%8E%9F%E5%AD%90%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%9B%20%E4%B8%AA%E4%BA%BA%E7%90%86%E8%A7%A3%EF%BC%9A%E7%B1%BB%E4%BC%BC%E4%BA%8Emysql%20binlog%E6%97%A5%E5%BF%97%EF%BC%8C%E6%AF%8F%E4%B8%80%E6%AC%A1%E7%9B%B8%E5%85%B3%E7%9A%84%20change,%E4%B8%AA%E4%BA%BA%E7%90%86%E8%A7%A3%EF%BC%9A%E8%A6%81%E7%9C%8B%E6%95%B4%E4%B8%AA%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%9A%84%E5%A4%9A%E4%B8%AA%E4%B8%9A%E5%8A%A1%E8%BF%87%E7%A8%8B%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95%20%E2%86%92%20%E4%B9%B0%E5%AE%B6%E4%BB%98%E6%AC%BE%20%E2%86%92%20%E5%8D%96%E5%AE%B6%E5%8F%91%E8%B4%A7%20%E2%86%92%20%E4%B9%B0%E5%AE%B6%E7%A1%AE%E8%AE%A4%E6%94%B6%E8%B4%A7%E3%80%82%20

7 主题域划分的思路*

按部门划分、按业务线划分、按业务系统划分、按业务过程划分。

8 数仓建模6连(细问项目)

  1. 有负责过具体某个域或者某个主题的开发吗?
  2. 一共化了几个主题域?挑一个讲一讲
  3. 做了哪个域的建设,负责了哪些业务过程,一致性纬度有哪些,建了哪些表?
  4. 描述下总线矩阵(一边是业务过程、一边是一致性维度)
  5. dwd是怎么建设?
  6. 用户下单有很多流水,是什么类型的事实表?有哪些维表?

        按照业务系统划分,先按系统划分一级主题域,再按系统各自的菜单(也就是子系统)划分二级主题域,例如主要的订票APP实际上有订票系统,还有积分系统,值机系统,抽奖活动系统等等。

        我来介绍下我做过的托运系统的主题域,其业务过程大致如下:创建订单(订单维度(订单id、流水号、订单号、下单时间)、客户维度(用户昵称、用户真实姓名、用户性别、用户身份证号、用户出生日期)、航班维度(起飞机场名称、起飞城市id、到达机场、名称、是否转机)、城市维度)->买家付款->客户值机(打印登机牌上的信息,有城市维度、客户维度、)->航班起飞->航班降落->用户服务。

        公共维度有城市维度(客户值机、航班起飞航班降落)、客户维度(创建订单、用户服务)、机长维度、乘务员维、机场维度、航班维度。

9 数据治理做了哪些工作?*

数据治理分为四个实施步骤:统筹规划→管理实施→稽核检查→资产运营,我主要参与了前两个步骤,在第一步统筹规划中,我的主要工作在盘点数据资产,其主要针对元数据,根据大数据之路的第12章,将元数据分成两类,技术性元数据和业务形元数据,然后针对业务形元数据梳理血缘图谱,并给元数据打标签。在第二步工作中,我主要通过计算统计量对数据质量做出评估,计算空值的比例,计算空值字段较多的比例,计算有效字段的中位数和众数(当空值达到一定比例时,认为该字段无效,遵循3西格玛准则,大于5%无效)

10 手撕SQL两道题

1.某一天的新用户。

窗口函数row_number()

2.连续7天登录的客户。*

先去重、再row_number()开窗、日期-rnk、最后group by id、rnk having count(*)>=7

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux下如何修改CPU 电源工作模式

最近处理一起历史遗留问题,感觉很爽。 现象: 背景:设备采用ARM,即rk3568处理器,采用Linux系统;主要用于视觉后端处理 现象:当软件运行一段时间,大概1个小时(也不是很固定…

Ruby软件外包开发语言特点

Ruby 是一种动态、开放源代码的编程语言,它注重简洁性和开发人员的幸福感。在许多方面都具有优点,但由于其动态类型和解释执行的特性,它可能不适合某些对性能和类型安全性要求较高的场景。下面和大家分享 Ruby 语言的一些主要特点以及适用的场…

RK3588平台开发系列讲解(AI 篇)RKNN C API 详细说明

文章目录 一、API 硬件平台支持说明二、API 函数介绍2.1、rknn_init2.2、rknn_destroy2.3、rknn_query2.4、rknn_inputs_set2.5、rknn_run2.6、rknn_outputs_get2.7、rknn_outputs_release沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN C API 详细…

2003-2022年高铁站开通时间

2003-2022年高铁站开通时间 1、时间区间:2003-2022年 2、指标如下:高铁站名称、开通时间、所在省份、所在城市、所属线路名称、以及相关备注 指标说明:Hsrwsnm[高铁站名称]-高铁站名称 Optm[开通时间]-高铁站开通的时间 Prvn[所在省份]-高…

计算机竞赛 python+大数据校园卡数据分析

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖&am…

星际争霸之小霸王之小蜜蜂(一)

目录 前言 一、安装pygame库 1、pygame库简介 2、在windows系统安装pygame库 二 、搭建游戏框架 1、创建游戏窗口 2、改变窗口颜色 总结 前言 大家应该都看过或者都听说过python神书“大蟒蛇”,上面有一个案例是《外星人入侵》,游戏介绍让我想起了上…

网络通信原理TCP字段解析(第四十七课)

字段含义Source Port(源端口号)源端口,标识哪

Android Stodio编译JNI项目,Cmake出错:Detecting C compiler ABI info - failed

在使用Android Stodio编译JNI项目时出现Cmake错误,报错如下: Execution failed for task :app:configureCMakeDebug[arm64-v8a]. > [CXX1429] error when building with cmake using C:\Users\Dell\AndroidStudioProjects\MyApplication2\app\src\ma…

线性代数再回顾

最近,在深度学习线性代数,之前大一的时候学过线性代数,但那纯属于是应试用的,考试一考完,啥都忘了,也说出不出个所以然,所以,在B站的MIT的线性代数以及3blue1brown线性代数的本质中去…

Linux学习之初识Linux

目录 一.Linux的发展历史及概念 1.什么是Linux UNIX发展的历史: Linux发展历史: 2. 开源 商业化发行版本 二. 如何搭建Linux环境 Linux 环境的搭建方式主要有三种: 1. 直接安装在物理机上 2. 使用虚拟机软件 3. 使用云服务器 三. …

Kafka-eagle监控平台

Kafka-Eagle简介 在开发工作中,当业务不复杂时,可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂,例如:需要增加group、topic分区,此时,再使用命令行就感觉很不方便,此时&#x…

ChatGPT爆火,会给教育带来什么样的影响或者冲击?

近来,人工智能聊天机器人ChatGPT连上热搜,火爆全网。ChatGPT拥有强大的信息整合能力、自然语言处理能力,可谓是“上知天文,下知地理”,而且还能根据要求进行聊天、撰写文章等。 ChatGPT一经推出,便迅速在社…

CSS(JavaEE初阶系列14)

目录 前言: 1.CSS是什么 1.1CSS基本语法 2.引入样式 2.1内部样式表 2.2行内样式表 2.3外部样式 3.选择器 3.1选择器的种类 3.1.1基础选择器 3.1.2复合选择器 4.常用元素属性 4.1字体属性 4.2文本属性 4.3背景属性 4.4圆角矩形 4.5元素的显示模式 4…

蓝牙资讯|中国智能家居前景广阔,蓝牙Mesh照明持续火爆

据俄罗斯卫星通讯社报道,中国已成为全球最大的智能家居消费国,占全球50%—60%的市场份额。未来,随着人工智能技术的发展以及智能家居生态的不断进步,智能家居在中国的渗透率将加速提升。德国斯塔蒂斯塔调查公司数据显示&#xff0…

【Linux】Reactor模式

Reactor模式 Reactor模式的定义 Reactor反应器模式,也叫做分发者模式或通知者模式,是一种将就绪事件派发给对应服务处理程序的事件设计模式。 Reactor模式的角色构成 Reactor主要由以下五个角色构成: reactor模式的角色 角色解释Handle(句…

EVE-NG MPLS L2VPN BGP pw -- static route,static mpls lsp

1 拓扑 2 配置步骤 2.1 配置接口IP 和静态路由 PE1 interface LoopBack 0ip address 1.1.1.9 32 quitinterface GigabitEthernet 1/0ip address 10.1.1.1 255.255.255.0quitip route-static 2.2.2.9 32 10.1.1.2 ip route-static 3.3.3.9 32 10.1.1.2 P interface LoopBac…

代码审计-ASP.NET项目-未授权访问漏洞

代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…

2022年电赛C题——小车跟随行驶系统——做题记录以及经验分享

前言 自己打算将做过的电赛真题,主要包含控制组的,近几年出现的小车控制题目,自己做过的真题以及在准备电赛期间刷真题出现的问题以及经验分享给大家 这次带来的是22年电赛C题——小车跟随行驶系统,这道题目指定使用的是TI的单片…

leetcode做题笔记83删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 输入:head [1,1,2] 输出:[1,2] 思路一:模拟题意 struct ListNode* deleteDuplicates(struct ListNode* head){i…

如何使用Python编写小游戏?

大家好,我是沐尘而生,如果你是一个热爱编程的小伙伴,又想尝试游戏开发,那么这篇文章一定能满足你的好奇心。不废话,让我们马上进入Python游戏开发的精彩世界吧! Python游戏开发的魅力 编写小游戏不仅仅是锻…