Как исправить WARN BLAS: не удалось загрузить реализацию из: com.github.fommil.netlib.NativeSystemBLAS в Intellij на Windows

Я пытаюсь запустить версию spark-mllib для совместной фильтрации на своем компьютере, используя версию сообщества intellij 2018.1, работающую в Windows. Я использовал ту же структуру для многих других скриптов без spark-mllib, и все работает хорошо. У меня проблема только при импорте библиотеки spark-mllib.

код, который я использую:

   var okrating = List[Rating]()
   var r = new Random()
    for( u <- 1 to 10){
      for(p <- 1 to 10){
        if(r.nextBoolean()){
          var rt = new Rating(u, p, 5*r.nextDouble())
          okrating = okrating :+ rt
        }
      }
    }
    ratings = sc.parallelize(okrating)
    println(ratings.collect().mkString("\n"))

    val model = ALS.train(ratings, 10, 100, 0.01)

зависимости таковы:

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.4.3</version>

        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>

Текущее сообщение об ошибке:

19/06/03 18:04:44 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
19/06/03 18:04:44 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
19/06/03 18:04:45 WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK
19/06/03 18:04:45 WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeRefLAPACK
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 71.0 failed 1 times, most recent failure: Lost task 1.0 in stage 71.0 (TID 515, localhost, executor driver): java.lang.StackOverflowError
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2245)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
    at scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
...

Любые идеи о происхождении этой ошибки? и как от него избавиться?

Спасибо.


person tammuz    schedule 03.06.2019    source источник
comment
К вашему сведению, это предупреждения, а не ошибки. Ваша программа аварийно завершает работу из-за ошибки StackOverflowError.   -  person Jasper-M    schedule 04.06.2019
comment
Я думаю, что они связаны, потому что это ненормально иметь StackOverflowError с данными такого размера.   -  person tammuz    schedule 04.06.2019
comment
Это, вероятно, больше связано, например. размер плана выполнения, чем размер данных.   -  person Jasper-M    schedule 04.06.2019
comment
Я мало знаю о mllib или netlib, но я видел подобные переполнения стека, которые были вызваны объединением многих RDD (что приводило к большим планам выполнения), если я правильно помню.   -  person Jasper-M    schedule 04.06.2019
comment
Я проверил, что максимальный размер кучи JVM составляет 1024 МБ.   -  person tammuz    schedule 04.06.2019
comment
Размер кучи и размер стека не связаны. Размер стека по умолчанию относительно невелик.   -  person Jasper-M    schedule 04.06.2019
comment
Наконец, вы были правы, проблема заключается в большом количестве итераций (100), стек может без проблем поддерживать только 10 итераций. Спасибо.   -  person tammuz    schedule 04.06.2019