场景一:

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 避免数据倾斜的更多相关文章

  1. Spark读取HDFS文件,任务本地化(NODE_LOCAL)

    Spark也有数据本地化的概念(Data Locality),这和MapReduce的Local Task差不多,如果读取HDFS文件,Spark则会根据数据的存储位置,分配离数据存储最近的Execu ...

  2. Spark读取HDFS文件,文件格式为GB2312,转换为UTF-8

    package iie.udps.example.operator.spark; import scala.Tuple2; import org.apache.hadoop.conf.Configur ...

  3. 记录一次读取hdfs文件时出现的问题java.net.ConnectException: Connection refused

    公司的hadoop集群是之前的同事搭建的,我(小白一个)在spark shell中读取hdfs上的文件时,执行以下指令 >>> word=sc.textFile("hdfs ...

  4. python之小应用:读取csv文件并处理01数据串

    目的:读取csv文件内容,把0和1的数据串取出来,统计出现1的连续次数和各次数出现的频率次数 先读取csv文件内容: import csv def csv_read(file): list = [] ...

  5. pig 自定义udf中读取hdfs 文件

    最近几天,在研究怎么样把日志中的IP地址转化成具体省份城市. 希望写一个pig udf IP数据库采用的纯真IP数据库文件qqwry.dat,可以从http://www.cz88.net/下载. 这里 ...

  6. Spark设置自定义的InputFormat读取HDFS文件

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/problem_spark_reading_hdfs_serial ...

  7. java Api 读取HDFS文件内容

    package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java ...

  8. Java读取json文件并对json数据进行读取、添加、删除与修改操作

    转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0   1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...

  9. POI 读取Excel文件 并解析JSON数据

    package skuPrice; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

随机推荐

  1. android onCreate中获取view宽高为0的解决方法

    view.post(runnable) 通过post可以将一个runnable投递到消息队列的尾部,然后等待UI线程Looper调用此runnable的时候,view也已经初始化好了. view.po ...

  2. 【转】linux查看及修改文件权限以及相关

    linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有 ...

  3. Docker - 技术栈

    与传统的方式类似,构建及运行Docker容器与在一台虚拟机上构建和运行程序的方式是相似的,只是使用了一套新的工具以及技术. 与虚拟机不同的是,Docker容器将宿主机与应用程序或者服务隔离,从而提高了 ...

  4. Docker - 入门

    术语 1. 镜像(image)与容器(container) 镜像是指文件系统快照或tar包. 容器是指镜像的运行态(时) 2.宿主机管理 设置/配置一台物理服务器或虚拟机,以便用于运行Docker容器 ...

  5. iOS 企业设备管理 补充中。。。

    公司的设备都有一个统一的管理方法,以前不太明白,今天看了一下资料. 这里解释了什么是设备管理 Profile Manager creates and distributes configuration ...

  6. PHP修改表格(增删改)

    要求: 1.熟练shi用  post 和  get  传值        2. php嵌套在HTML中        3.熟练:if 语句(其他语句)的使用 --------------------- ...

  7. 最终版的Web(Python实现)

    天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandl ...

  8. 关于VPN的一些问题

    在今在外出差,必须得连上公司的数据库,那就得使用VPN了,设置起来还算比较简单(我是win10), 简单介绍一下: 打开设置或者直接点击右下角的

  9. sql 数据库结构导出到文件

    SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...

  10. 忘记Windows7登陆密码解决办法

    忘记 Windows7 的登陆密码,解决这个问题的思路就是替换 system32 下的 Magnify.exe . 可以从 WindowsPE 启动,到 C:\windows\system32 下. ...