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
пакета, а для неявных преобразований.