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日

悬赏问题

  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊