加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

面试官:你处理过数量级很大的数据吗?实际上是在问什么?

发布时间:2022-09-15 16:02:29 所属栏目:大数据 来源:
导读:  在数据分析面试时,很多面试官会担心应聘者对大数据的处理能力不够导致拖垮服务器。因此面试官经常会问:“你处理过多大量级的数据?我们的数据量很大,你能处理吗?”

  如果应聘者第一次遇到这
  在数据分析面试时,很多面试官会担心应聘者对大数据的处理能力不够导致拖垮服务器。因此面试官经常会问:“你处理过多大量级的数据?我们的数据量很大,你能处理吗?”
 
  如果应聘者第一次遇到这样的问题,不知道面试官实际想要的答案是什么,直接说我们的用户数量级有3亿,以此表示自己处理过大量级的数据。如果没有其他补救措施,你可能就会被淘汰了,因为这不是面试官想要的答案。
 
  大数据数量级_大数据激活女人经济 36大数据_数量b大还是m大
 
  要想给出面试官想要的答案,需要搞清楚面试官问这个问题实际上是在问什么。这个问题可以换一种问法:“数据有倾斜时,你是怎么处理的?”
 
  要想正确回答这个问题,你需要清楚数据倾斜的原因、表现和处理方法。
 
  一、数据倾斜的原因
 
  key分布不均匀业务数据本身的特性建表时考虑不周SQL语句导致倾斜
 
  大数据激活女人经济 36大数据_大数据数量级_数量b大还是m大
 
  二、数据倾斜的表现
 
  任务进度长时间维持在99%(或100%)。查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大,导致最大处理时长远大于平均时长。
 
  三、数据倾斜解决方法:map join
 
  要想解决数据倾斜问题,首先需要了解hive中的common join和mapjoin。
 
  Commonjoin和mapjoin都分为三个阶段:map、shuffle、reduce。
 
  Commonjoin和mapjoin的区别在于:common Join在reduce阶段完成join,而map join在map阶段就完成join,节省了shuffle阶段的大量数据传输。
 
  1. MapJoin的实现方法:
 
  在Hive v0.7之前,使用hint提示/*+ mapjoin(table) */执行map join。
 
  Hivev0.7之后的版本,通过参数配置来控制:
 
  hive> set hive.auto.convert.join=true;
 
  2. 可以设置小表的阈值,以开启和关闭mapjoin的阈值:
 
  hive> set hive.mapjoin.smalltable.filesize=50000000; --- 即50M
 
  3. 对于groupby或distinct情形产生的数据倾斜,可以设定
 
  hive> set hive.groupby.skewindata=true;
 
  四、map join的适用场景
 
  五、 mapjoin 解决数据倾斜实例
 
  1. log表有10亿行记录,VIP 表只有1000行记录,而且order表中数据倾斜特别严重,有一个key上有1亿行记录。
 
  如果使用以下语句:
 
  select t2.id, t2.log_time
 
  from VIP t1 join log t2
 
  on ( t2.id=t1.id and t2.ftime=’2019-11-03’)
 
  你会发现该语句中运行很慢,而且可能在reduce的过程中遇到内存不够的报错提示。
 
  改进方法:
 
  select /*+ mapjoin(VIP)*/ t2.id, t2.log_time
 
  from VIP t1 join log t2
 
  on (t2.id=t1.id and t2.log_date=’2019-11-03’)
 
  注:以上语句使用Hive v0.7之前的hint提示方法
 
  再运行,会发现执行的效率比以前的写法提高很多。
 
  2. mapjoin进行不等连接的join操作
 
  如果将不等条件写在where中,那么mapreduce过程中会进行笛卡尔积大数据数量级,运行效率特别低。但如果使用mapjoin操作,在map的过程中就完成了不等值的join操作,效率会高很多。
 
  如:
 
  select /*+ mapjoin(VIP)*/ t1.log_time, t2.log_time
 
  from t1 join t2
 
  on (t1.log_time < t2.log_time)
 
  注:以上语句使用Hive v0.7之前的hint提示方法
 
  往期回顾
 
  还在为数据分析职业发展路径迷茫? 一文读懂数据分析、数据挖掘、算法、数据开发工程师的异同
 
  面试官:你处理过数量级很大的数据吗?实际上是在问什么?
 
  数据分析常见思维能力考题,看看你会被直接淘汰吗?
 
  数据建模必知六大步骤
 
  数学算法的世界
 
  专注数据科学领域知识和资讯传播
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!