【大数据】基础知识 4

小白学数据,只为记录学习进程,对每个问题有新的理解会及时更正。

一、Hive数据倾斜解决方案
数据倾斜原因是有的key对应了太多的数据,这些数据都集中到一个reducer上处理,表现出来是,其他reduce都处理完了,但这个reduce一直没结束任务
解决方法:
1、设置hive.map.aggr = true:先在map端对数据进行整合,把Key相同的放在一起,减少数据量,这样可以减少进入reduce的数据量,可以一定程度优化数据倾斜的问题。
2、设置均衡负载器,hive.groupby.skewindata = true:这样可以开启两个mrjob,完成任务,第一个mr的map端会随机的把数据分配到reduce中,使数据均衡分布在每个reduce任务中,reducer完成相关的聚合操作;第二个mrjob再把相同的key分配到一个reduce中,reduce完成整合即可。这样使得集中的数据再第一个mrjob中均匀分配,完成了聚合操作,避免了数据倾斜问题
3、SQL调节,join的时候,用key分布均匀的表作为驱动表
4、小表join大表:使用mapjoin,把小表放在内存中,在map端就完成join操作
5、关联词有null:因为关联的时候会把Null的数据集中到一个reduce中,所以可以在关联之前把null对应的数据过滤掉,或者使用case when 方法把null值随机赋值
6、含有count (distinct )的时候,可使用sum … group by 来替代

二、order by,sort by,distribute by,cluster by的区别
order by:全局排序,对所有数据排序,只产生一个reducer
distribute by,sort by: 经常一起使用,表示分区排序,distribute by 后跟分区字段,sort by 接排序字段,产生多个reducer,以及多个文件
cluster by:当distribute by,sort by后面的字段都一样的时候,可以简写成cluster by。

二、Hive的优化策略
1、使用mapjoin:把小表放在内存中,在map端就完成join操作,减少reduce压力
2、进行行列处理:行处理,先对数据进行筛选再join,不要先join再筛选,避免了全局join;列处理:尽量select出来具体有用的字段,不要用select * 筛选出全部字段
3、采用分区分桶技术:避免了查询时候的全局扫描
4、设置合理的map数量:当小文件过多,通过合并小文件,来减少map数量,因为每个map启动会耗费资源和时间,若启动很多Map处理小文件,启动和初始化map的时间远大于逻辑处理的时间,造成了很多资源浪费;若数据是字段很少,但行数很多的数据样式,即使大小的接近128M的,也要拆分文件,增加map数量来处理,因为map读取数据是按行读取的,若不处理,一个map读取数据就会耗费很多时间。
5、设置合理的reduce数量:启动,初始化reduce也是耗费资源的,过多的reduce会耗费大量资源,同时也会输出过多的小文件
6、谓词下推:把过滤条件尽可能写的靠近源数据的部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据的知识背景可以分为以下几个层次: 1. 数据采集与存储层:这一层需要掌握数据采集的技术,包括爬虫、数据抓取、数据清洗等,同时需要了解常见的数据存储技术,如关系型数据库、NoSQL数据库、分布式文件系统等,以及它们的优缺点和适用场景。 2. 数据处理与分析层:这一层需要掌握数据处理和分析的技术,如数据挖掘、机器学习、深度学习等,同时需要掌握常见的数据处理和分析工具,如Hadoop、Spark、Flink等,以及它们的使用和优化方法。 3. 数据可视化与应用层:这一层需要掌握数据可视化的技术,如图表绘制、数据报表、仪表盘等,同时需要掌握常见的数据应用技术,如推荐系统、广告投放、智能客服等,以及它们的实现和优化方法。 每一层需要的基础知识不同,但是一个基本的大数据从业者需要具备以下基础知识: 1. 数据结构和算法:数据结构和算法是大数据处理和分析的基础,需要掌握常见的数据结构和算法,如数组、链表、栈、队列、树、图等,以及它们的基本操作和应用场景。 2. 编程语言:需要掌握至少一门编程语言,如Java、Python、Scala等,以及它们的基本语法和面向对象编程思想。 3. 数据库:需要了解关系型数据库和NoSQL数据库的基本概念和使用方法,如MySQL、Oracle、MongoDB、Redis等。 4. 统计学和数学:需要了解基本的统计学和数学知识,如概率论、统计推断、线性代数、微积分等,以及它们在大数据处理和分析中的应用。 5. 操作系统和网络知识:需要了解操作系统和网络的基本知识,如Linux、TCP/IP、HTTP等,以及它们在大数据处理和分析中的应用。 以上是大数据从业者需要掌握的基本知识,不同的职业岗位可能需要更深入的专业知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值