读取hdfs文件之后repartition 避免数据倾斜
场景一:
api:
textFile("hfds://....").map((key,value)).reduceByKey(...).map(实际的业务计算逻辑)
场景:hdfs的某个文件有183个block,他们的大小分布非常不均匀时,比如有的是200M,有的是1M,有的是10K。此时spark计算非常非常慢,通过web ui监视发现,有的task处理了好几百M的数据,有的
task之处理了几k,导致严重的数据倾斜。
其中stage0阶段有183个task,这个阶段几乎没有什么计算任务,主要就是从hdfs上读取数据,stage0一共读取了5.4G的压缩后的lzo数据,耗时在9.3Min左右。
让人痛苦的是,在reduceByKey时,reduce数量也是183个,从这里噩梦就开始了,耗时在2个多小时还没有计算完毕。
原因:默认情况下,spark 的初始rdd的partition数量和hdfs的block 数量大小一致,在上面这个场景下,初始rdd的partition个数就是183,并且后面的reduceByKey等都是183,可以通过在textFile之后
repartition一下,可以将次数设置的小一点,这样那些小的block就会聚合到一个parttion了。
2.场景2,groupByKey要比reduceByKey快
读取hdfs文件之后repartition 避免数据倾斜的更多相关文章
- Spark读取HDFS文件,任务本地化(NODE_LOCAL)
Spark也有数据本地化的概念(Data Locality),这和MapReduce的Local Task差不多,如果读取HDFS文件,Spark则会根据数据的存储位置,分配离数据存储最近的Execu ...
- Spark读取HDFS文件,文件格式为GB2312,转换为UTF-8
package iie.udps.example.operator.spark; import scala.Tuple2; import org.apache.hadoop.conf.Configur ...
- 记录一次读取hdfs文件时出现的问题java.net.ConnectException: Connection refused
公司的hadoop集群是之前的同事搭建的,我(小白一个)在spark shell中读取hdfs上的文件时,执行以下指令 >>> word=sc.textFile("hdfs ...
- python之小应用:读取csv文件并处理01数据串
目的:读取csv文件内容,把0和1的数据串取出来,统计出现1的连续次数和各次数出现的频率次数 先读取csv文件内容: import csv def csv_read(file): list = [] ...
- pig 自定义udf中读取hdfs 文件
最近几天,在研究怎么样把日志中的IP地址转化成具体省份城市. 希望写一个pig udf IP数据库采用的纯真IP数据库文件qqwry.dat,可以从http://www.cz88.net/下载. 这里 ...
- Spark设置自定义的InputFormat读取HDFS文件
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/problem_spark_reading_hdfs_serial ...
- java Api 读取HDFS文件内容
package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java ...
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0 1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...
- POI 读取Excel文件 并解析JSON数据
package skuPrice; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...
随机推荐
- 静态界面传值javascript
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码代码如下: <input type="text" n ...
- BZOJ1269——[AHOI2006]文本编辑器editor
1.题意:各种splay操作,一道好的模板题2333 2.分析:splay模板题,没啥解释QAQ #include <stack> #include <cstdio> #inc ...
- highcharts
preparation Highcharts Highcharts是一个制作图表的纯Javascript类库,主要特性如下: 兼容性:兼容当今所有的浏览器,包括iPhone.IE和火狐等等: 对个人用 ...
- 小的div在大的div中垂直居中
方法一: 1.代码: <div style="width:200px;height:200px;border:solid blue;position:relative;"&g ...
- Reverse Core 第一部分 代码逆向技术基础
@date: 2016/10/14 <逆向工程核心原理>笔记 记录书中较重要的知识,方便回顾 ps. 因有一些逆向基础,所以我本来就比较熟悉的知识并未详细记录 第一章 关于逆向工程 目标, ...
- FFmpeg介绍
---恢复内容开始--- FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常 ...
- Werkzeug工具包学习-官方例子Shortly分析
为了学习werkzeug的wsgi框架工具,今天真对官网的例子进行调试运行.涉及到了werkzeug工具包,jinja2前端模版,以及redis内存库,之后可以灵活定制自己主页.再次,作以记录. 首先 ...
- 初识MVC
本人是一个程序员,我也是一个很普通很普通的人,当我初学一些东西的时候感觉都很难,毕竟没有天才的头脑,没有高等的学历,但是我有的只是努力,只是拼搏的精神,人都是为自己而活,也可能为他人而活,但是有时候在 ...
- Mac Pro 8G 安装MyEclipse提示虚拟内存为0 安装失败
看的一个大神的博客,一句话解决了.哈哈 百度一下很多人都说开多一点程序,让程序占满内存,使其虚拟内存使用就能通过这一步骤,但这里有个更好一点的方案 通过执行: memory_pressure -l ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...