wyangue 2023-08-31 13:45 采纳率: 0%
浏览 7

java使用spark本地模式为什么性能低下

java使用spark 本地模式,性能很差甚至不如纯java代码是什么原因

    SparkConf conf = new SparkConf()
            .setAppName("MyApp")
            .set("spark.executor.memory", "8g")
            .set("spark.driver.memory", "8g")
            .setMaster("local[*]");

    JavaSparkContext sc = new JavaSparkContext(conf);

    List<Integer> data=new ArrayList<>();
    for (int i = 0; i < 20000000; i++) {
        data.add(i);
    }
    System.out.println("开始");
    long startTime = System.currentTimeMillis();
    /*
    for (int i = 0; i < 20000000; i++) {
       int x=i*i;
    }
    */
    JavaRDD<Integer> rdd = sc.parallelize(data).map(x -> x * x);
    System.out.println(rdd.count());
    System.out.println("结束");
    long endTime = System.currentTimeMillis(); // 获取方法结束时间
    long executionTimeMillis = endTime - startTime; // 计算方法执行时间(毫秒)
    double executionTimeSeconds = executionTimeMillis / 1000.0; // 转换为秒
    System.out.println(executionTimeSeconds);

问题描述:最开始以为是spark的内存给的太少,通过set修改了内存大小,但是毫无影响,又做了对比测试,可以看到我代码中被注释掉的部分实现了同样的功能,都是求2次方。纯java输出的用时是0.02,而spark却用了20秒,而且通过任务管理器也发现spark代码部分在运行时CPU和内存占用都不高

版本说明:使用的是spark3.4.0的

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>3.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.12</artifactId>
        <version>3.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-mllib_2.12</artifactId>
        <version>3.4.0</version>
    </dependency>
</dependencies>
  • 写回答

2条回答 默认 最新

  • 卑以自牧w 2023-08-31 14:42
    关注

    那是因为你是小数据量的计算,spark使用的是内存和分布式计算,java的计算是基于单机的,在处理大数据量的计算spark的优势才能凸显
    spark哦那个了很多高级的数据结构,这些结构在处理大规模数据上做了优化,并且采用的了高效的数据缓存和数据分区技术,在大规模数据上能进行高效的内存计算和并行计算,总而言之就是spark是处理大规模数据的

    评论

报告相同问题?

问题事件

  • 创建了问题 8月31日

悬赏问题

  • ¥50 关于#华为#的问题:华为HMS账号登录
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?