原来的代码:

 JavaRDD<ArticleReply> javaRdd = rdd.flatMap(new FlatMapFunction<String, ArticleReply>() {
private static final long serialVersionUID = 10000L;
List<ArticleReply> newList = new ArrayList<ArticleReply>();
public Iterable<ArticleReply> call(String line) throws Exception {
String[] splits = line.split("\t");
ArticleReply bean = new ArticleReply();
bean.setAreaId(split[0]);
bean.setAgent(Integer.parseInt(splits[1]));
bean.setSerial(splits[2]);
newList.add(bean);
return newList;
}
});

正确写法:

 JavaRDD<ArticleReply> javaRdd = rdd.flatMap(new FlatMapFunction<String, ArticleReply>() {
            private static final long serialVersionUID = 10000L;

            public Iterable<ArticleReply> call(String line) throws Exception {
         List<ArticleReply> newList = new ArrayList<ArticleReply>();
String[] splits = line.split("\t");
ArticleReply bean = new ArticleReply();
bean.setAreaId(split[0]);
bean.setAgent(Integer.parseInt(splits[1]));
bean.setSerial(splits[2]);
newList.add(bean);
return newList;
}
});

错误的写法中把list声明和初始化在flatMap函数之外,造成每次调用flatMap函数后,list的bean会增加一个,同时程序会将改list返还回去,那么spark接收的对象1+2+3+...+N个,

而不是N个,会极大地消耗spark的内存,造成spark运行内存不足。

spark遇到的错误1-内存不足的更多相关文章

  1. 【Spark】榨干Spark性能-driver、exector内存突破256M

    榨干Spark性能-driver.exector内存突破256M spark driver memory 256m_百度搜索 Spark executor.memory - CSDN博客 sparkd ...

  2. Spark在Executor上的内存分配

    spark.serializer (default org.apache.spark.serializer.JavaSerializer )    建议设置为 org.apache.spark.ser ...

  3. Spark 1.6以后的内存管理机制

     Spark 内部管理机制 Spark的内存管理自从1.6开始改变.老的内存管理实现自自staticMemoryManager类,然而现在它被称之为"legacy". " ...

  4. 配置Spark on YARN集群内存

    参考原文:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 运行文件有几个G大,默 ...

  5. Spark BlockManager的通信及内存占用分析(源码阅读九)

    之前阅读也有总结过Block的RPC服务是通过NettyBlockRpcServer提供打开,即下载Block文件的功能.然后在启动jbo的时候由Driver上的BlockManagerMaster对 ...

  6. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 struct stude ...

  7. Spark:相关错误总结

    http://blog.csdn.net/pipisorry/article/details/52916307 路径错误 spark FileNotFoundError: [Errno 2] No s ...

  8. 使用spark访问hive错误记录

    在spark集群中执行./spark-shell时报以下错误: 18/07/23 10:02:39 WARN DataNucleus.Connection: BoneCP specified but ...

  9. Spark笔记(一):错误总结

    1.转义字符: 常见的replaceAll,split,mkstring中涉及到特殊字符的都要加上转义字符,比如str.split("\\|"),str.replaceAll(&q ...

随机推荐

  1. python之路——1

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 学习内容 python的历史: python2 源码不标准,混乱,重复代码太多, python3 统一 标准 ...

  2. ARM Cortex-A9 (tiny 4412)

    要求 移植linux增加系统调用并烧写至开发板 详细步骤 一.搭建linux编译环境 1.GCC 编译器的安装: tar xzvf arm-linux-gcc-4.5.1-v6-vfp-2012030 ...

  3. [UE4]Child Widget中的事件调度器

    在Child Widget中新建事件调度器,就会自动在使用该Child Widget的父级界面的事件列表中自动自动出现.功能十分强大.

  4. 如何用MAT分析Android程序的内存泄露

    本文结合<Android开发艺术探索>书籍中的内存分析例子来讲解如何利用MAT工具来查找内存泄漏(以AndroidStudio开发工具为例). 1.下载MAT(Eclipse Memory ...

  5. UI 性能因素考虑

    浏览器的最大并发连接数一般在4到6之间,首先了解影响加载的性能因素: (1)下载的文件太大 (2)发出的请求太多 (3)请求相应不及时 针对这些因素,一般会考虑减少请求次数: (1)对静态文件设置缓存 ...

  6. crm SDK 设置用户的上级

    /// <summary> /// 设置用户的上级 /// </summary> /// <param name="service">服务< ...

  7. [电脑知识点]Excel取消受保护视图

  8. vue学习笔记-初始化一个vue项目(1)

    1.cnpm install -g vue-cliUsage:vue init <template-name> <project-name> 2.我们一般使用webpack模版 ...

  9. MySQL也真是让人郁闷(关于子查询中使用limit)

    在MySQL4.1中子查询是不能使用LIMIT的,手册中也明确指明 “This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY ...

  10. 线程守护进程与GIL

    为何要用多线程 多线程指的是,在一个进程中开启多个线程,简单的讲:如果多个任务共用一块地址空间,那么必须在一个进程内开启多个线程.详细的讲分为4点: 1. 多线程共享一个进程的地址空间 2. 线程比进 ...