Как исправить «ошибку: обнаружен неисправимый цикл разрешения импорта»? - PullRequest
1 голос
/ 04 апреля 2020

Как устранить следующую ошибку компиляции?

SOApp.scala:7: error: encountered unrecoverable cycle resolving import.
Note: this is often due in part to a class depending on a definition nested within its companion.
If applicable, you may wish to try moving some members into another object.
  import spark.implicits._

Код:

object SOApp extends App with Logging {
  // For implicit conversions like converting RDDs to DataFrames
  import spark.implicits._

  import org.apache.spark.sql.SparkSession  
  val spark = SparkSession
    .builder()
    .appName("Stackoverflow App")
    .master("local[*]")
    .getOrCreate()
}

1 Ответ

1 голос
/ 06 апреля 2020

tl; dr Move import spark.implicits._ после val spark = SparkSession...getOrCreate().


Это имя spark вызывает много путаницы, поскольку оно может относиться к пакету org.apache.spark как а также spark значение.

В отличие от Java, Scala допускает import операторов во многих других местах.

То, что вы могли бы рассмотреть, это идиома Spark SQL создать значение spark, которое дает доступ к последствиям. В Scala вы можете вносить импликации в область видимости только из стабильных объектов (например, значений), так что следующее верно:

  // For implicit conversions like converting RDDs to DataFrames
  import spark.implicits._

И, как вы говорите, это говорит о неявном преобразовании СДР в DataFrames ( среди прочего).

Это не для импорта org.apache.spark пакета, а для неявных преобразований.

...