ошибка компиляции кода h2o scala не найден объект ai

#scala #apache-spark #h2o

#scala #apache-spark #h2o

Вопрос:

Я пытаюсь скомпилировать и запустить простой код h2o scala. Но когда я создаю пакет sbt, я получаю ошибки. Я что-то упускаю в файле sbt

Это мой код h2o scala

 import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.sql._

import ai.h2o.automl.AutoML
import ai.h2o.automl.AutoMLBuildSpec

import org.apache.spark.h2o._

object H2oScalaEg1 {

  def main(args: Array[String]): Unit = {

  val sparkConf1 = new SparkConf().setMaster("local[2]").setAppName("H2oScalaEg1App")

  val sparkSession1 = SparkSession.builder.config(conf = sparkConf1).getOrCreate()

  val h2oContext = H2OContext.getOrCreate(sparkSession1.sparkContext)

  import h2oContext._

  import java.io.File

  import h2oContext.implicits._

  import water.Key

  }

}
  

И это мой файл sbt.

 name := "H2oScalaEg1Name"

version := "1.0"

scalaVersion := "2.11.12"

scalaSource in Compile := baseDirectory.value / ""

libraryDependencies  = "org.apache.spark" %% "spark-core" % "2.2.3"

libraryDependencies  = "org.apache.spark" %% "spark-sql" % "2.2.0"

libraryDependencies  = "org.apache.spark" %% "spark-hive" % "2.2.0"

libraryDependencies  = "ai.h2o" % "h2o-core" % "3.22.1.3" % "runtime" pomOnly()
  

Когда я создаю пакет sbt, я получаю эти ошибки

 [error] /home/myuser1/h2oScalaEg1/H2oScalaEg1.scala:7:8: not found: object ai

[error] import ai.h2o.automl.AutoML

[error]        ^

[error] /home/myuser1/h2oScalaEg1/H2oScalaEg1.scala:8:8: not found: object ai

[error] import ai.h2o.automl.AutoMLBuildSpec

[error]        ^
[error] /home/myuser1/h2oScalaEg1/H2oScalaEg1.scala:10:25: object h2o is not a member of package org.apache.spark

[error] import org.apache.spark.h2o._
[error]                         ^

[error] /home/myuser1/h2oScalaEg1/H2oScalaEg1.scala:20:20: not found: value H2OContext
[error]   val h2oContext = H2OContext.getOrCreate(sparkSession1.sparkContext)
[error]                    ^


[error] /home/myuser1/h2oScalaEg1/H2oScalaEg1.scala:28:10: not found: value water
[error]   import water.Key
[error]          ^
[error] 5 errors found
  

Как я могу исправить эту проблему.

Моя версия spark в spark-2.2.3-bin-hadoop2.7

Спасибо,

marrel

Комментарии:

1. Вы пробовали sbt reload ?

2. Также, глядя на maven central, вы могли бы попробовать libraryDependencies = "ai.h2o" % "h2o-core" % "3.22.1.5" без pomOnly()

Ответ №1:

pomOnly() в build.sbt указывает обработчикам управления зависимостями, что библиотеки / артефакты jar для этой зависимости не должны загружаться и искать только метаданные.

Попробуйте использовать libraryDependencies = "ai.h2o" % "h2o-core" % "3.22.1.3" вместо этого.

Редактировать 1: Кроме того, я думаю, что вам не хватает (по крайней мере) одной библиотечной зависимости: libraryDependencies = "ai.h2o" % "h2o-automl" % "3.22.1.3"

смотрите: https://search.maven.org/artifact/ai.h2o/h2o-automl/3.22.1.5/pom

Правка 2: Последняя зависимость, которой вам не хватает, — это sparkling-water-core: libraryDependencies = "ai.h2o" % "sparkling-water-core_2.11" % "2.4.6" должно сработать.

Вот github sparkling-water/core/src/main/scala /org/apache /spark /h2o .

Комментарии:

1. Спасибо. Я попробую ваши предложения.

2. Как и было предложено вами, я перезагрузил sbt, затем попробовал с этим в build.sbt. libraryDependencies = «ai.h2o»% «h2o-core»% «3.22.1.3» Эта ошибка 1 исчезла, не найдена: значение water. Остальные 4 ошибки остались прежними.

3. Затем я попробовал с этим в build.sbt libraryDependencies = «ai.h2o»% «h2o-core»% «3.22.1.5» Я получил те же ошибки. Хотя спасибо за предложения.

4. Возможно, вам не хватает большего количества этих ai.h2o зависимостей? Пока у вас есть только h2o-core . Смотрите: search.maven.org/search?q=ai.h2o

5. Да, я пытался сейчас с libraryDependencies = «ai.h2o» %% «sparkling-water-core» % «0.2.0», и именно тогда я увидел ваш пост. Я также добавлю libraryDependencies = «ai.h2o»% «h2o-automl»% «3.22.1.3» и посмотрю, компилируется ли он. Спасибо.