Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark Java堆空间_Java_Apache Spark_Heap_Space - Fatal编程技术网

Spark Java堆空间

Spark Java堆空间,java,apache-spark,heap,space,Java,Apache Spark,Heap,Space,spark有一个问题,当我试图生成模型时,我遇到了一个java堆空间异常,我无法解决。 我试图把这个值放在VM选项-Xmx4g上,但什么也没发生。 我也尝试过将这些参数添加到spark配置中,但还是没有结果。 Java版本:7 Spark版本:2.1.0 SparkConf conf = newSparkConf().setAppName("myAPP").setMaster("local"); conf = (conf.setMaster("local[*]")); Spar

spark有一个问题,当我试图生成模型时,我遇到了一个java堆空间异常,我无法解决。 我试图把这个值放在VM选项-Xmx4g上,但什么也没发生。 我也尝试过将这些参数添加到spark配置中,但还是没有结果。 Java版本:7 Spark版本:2.1.0

 SparkConf conf = newSparkConf().setAppName("myAPP").setMaster("local");
    conf = (conf.setMaster("local[*]"));
    SparkContext sc = new SparkContext(conf);


    JavaRDD<LabeledPoint> data = MLUtils.loadLibSVMFile(sc, path).toJavaRDD();

    // Split initial RDD into two... [60% training data, 40% testing data].
    JavaRDD<LabeledPoint>[] splits =
            data.randomSplit(new double[]{0.6, 0.4}, 11L);
    JavaRDD<LabeledPoint> training = splits[0].cache();
    JavaRDD<LabeledPoint> test = splits[1];

    // Run training algorithm to build the model.
    final LogisticRegressionModel model = new LogisticRegressionWithLBFGS()
            .setNumClasses(2)
            .run(training.rdd());

    // Clear the prediction threshold so the model will return probabilities
    model.clearThreshold();


    // Compute raw scores on the test set.
    JavaRDD<Tuple2<Object, Object>> predictionAndLabels = test.map(
            new Function<LabeledPoint, Tuple2<Object, Object>>() {
                @Override
                public Tuple2<Object, Object> call(LabeledPoint p) {
                    Double prediction = model.predict(p.features());
                    return new Tuple2<Object, Object>(prediction, p.label());
                }
            }
    );

    // Get evaluation metrics.
    BinaryClassificationMetrics metrics =
            new BinaryClassificationMetrics(predictionAndLabels.rdd());

我经常遇到这个问题,我们使用动态资源分配,我认为它将利用我的集群资源来最适合应用程序

但事实是,动态资源分配并没有设置驱动程序内存,而是将其保持在默认值1g

我通过将spark.driver.memory设置为适合我的驱动程序内存的数字(对于32gb ram,我将其设置为18gb)解决了这个问题

您可以使用spark submit命令进行如下设置:

spark-submit --conf spark.driver.memory=18gb ....cont
非常重要的一点是,根据spark文档,如果从代码设置此属性,则不会考虑此属性:

火花特性主要可分为两类:一类是相关的 部署,如“spark.driver.memory”、“spark.executor.instances”, 设置时,此类属性可能不受影响 在运行时通过SparkConf以编程方式进行,或者行为是 取决于您选择的群集管理器和部署模式,因此 建议通过配置文件或spark提交进行设置 命令行选项;另一个主要与Spark运行时有关 控件,如“spark.task.maxFailures”,此类属性可以 以任何一种方式设置

spark-submit --conf spark.driver.memory=18gb ....cont