Spark-使用问题总结
来源:互联网 发布:sql group by多个字段 编辑:程序博客网 时间:2024/06/06 12:33
前言
通过前面两篇文章的学习,对大数据运用中遇到的问题基本可以解决,本篇文章再补充一些前面没有提到的问题和知识点,希望避免大家踩坑。
map数目控制
通过前面的文章对参数调优有了基本认识,这里再补充一点我在hadoop streaming中关于map数目控制的知识。通过参数控制使得每个map处理的数据量基本均衡,加快运行时间,避免出现因为数据量的不均衡导致的时间浪费。
map数目默认情况下是和文件的分片数目相同(default_num),系统默认是64m或者是128m,比如说如果输入文件大小是70m左右,这样同一个文件就会需要两个map进行处理,一个是64m一个是6m,造成处理数据的不均衡,这种情况下可以通过设置如下参数(split_num),将split大小设为40m,参数的单位是byte,保证一个文件有两个map处理,并且处理的数据量大致相等。
-D mapred.min.split.size=41943040
很多博客中说可以通过参数mapred.map.tasks(goal_num)来设置程序员期望的map个数,但是个数只有在大于default_num的时候,才会生效。我通过实验发现貌似并不是这样,相反,只有该参数小于default_num,才会生效,也就是取两者中的最小值。如果错误,欢迎指正。
-D mapred.map.tasks= 600
最终map的数目个数的计算就是
compute_map_num = min(split_num, max(default_num, goal_num))
既然存在文件太大需要拆分,也必然会存在文件过小需要合并。这种情况本人还没有遇到过,做个标记遇见后再进行处理。
数据倾斜
这个问题在前面的两篇文章中已经有所介绍,就不再赘述,提供pyspark下跑通的代码示例,pyspark的示例比较少,可以给大家做个参考,发生了数据倾斜,统计key的分布,将倾斜的数据过滤出来进行单独处理,本人使用的是map join。aData和aBigData数据做join发生数据倾斜,代码如下:
计算各个key的数目:
aCount = aData.groupBy(a.name).count()
过滤出倾斜数据:
aLargeCount = aCount.filter("count > 100000")
取出倾斜数据的key,collect到Driver端,为和大表进行join做准备:
aLarge = aLargeCount.select("name").rdd.map(lambda x:x[0]).collect()
aLargeCount = aCount.filter("count > 100000")
取出倾斜数据的key,collect到Driver端,为和大表进行join做准备:
aLarge = aLargeCount.select("name").rdd.map(lambda x:x[0]).collect()
map join操作:
aLargeBC = sc.broadcast(aLarge)
aLargeSku = aBigData.filter(col("name").isin(aLargeBC.value))
aLargeBC = sc.broadcast(aLarge)
aLargeSku = aBigData.filter(col("name").isin(aLargeBC.value))
总结:
先补充上面两个小的知识点,遇到新的问题再进行补充,欢迎读者指正文中存在的问题。
阅读全文
0 0
- Spark-使用问题总结
- Spark-问题总结
- spark 运行问题总结
- spring boot使用spark javaRdd出现序列化问题总结
- spark使用总结
- spark线上环境问题总结
- spark aggregateByKey函数使用问题
- spark使用过程中的问题
- 使用Spark Streaming处理爬取的数据(问题总结)
- Hadoop/Spark相关面试问题总结
- Hadoop/Spark相关面试问题总结
- Hadoop/Spark相关面试问题总结
- Hadoop/Spark相关面试问题总结
- 关于Spark学习的问题总结
- Hadoop/Spark相关面试问题总结
- hadoop-spark错误问题总结(二)
- spark-sql中文字符使用问题
- Spark总结
- 刘汝佳p39,3-2(开灯问题)算法竞赛入门经典第二版
- R语言常用packages(常用R包)
- 【备忘】最新spark/hadoop/hbase/hive/kafka/redies大数据视频教程
- 加快Qt的编译速度
- 听见丨特斯拉电动卡车售价公布:100万元起 朱啸虎:ofo和摩拜会合并 但还要再经历一战
- Spark-使用问题总结
- IP报文首部结构、TCP报文首部结构
- 机器学习-贝叶斯算法
- PCB板上字母表示的含义
- 如何使用MCUXpresso IDE创建一个Cortex-M工程
- C掷色子(随机数)
- 数据结构实验之图论八:欧拉回路
- 时间复杂度和空间复杂度
- [MVVM]05-MvvmLight页面与Model层的交互含UI线程