• spark遇到的错误1-内存不足


    原来的代码:

     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("	");
                    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(" "); 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运行内存不足。

  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/fillPv/p/5013732.html
Copyright © 2020-2023  润新知