Spark-"paquete sbt"-"valor $ no es miembro de StringContext"-¿Falta el complemento Scala?
intellij-idea apache-spark (3)
Gran respuesta chicos, si resolver la importación es una preocupación, entonces esto funcionará
import org.apache.spark.sql.{SparkSession, SQLContext}
val ss = SparkSession.builder().appName("test").getOrCreate()
val dataDf = ...
import ss.sqlContext.implicits._
dataDf.filter(not($"column_name1" === "condition"))
Cuando ejecuto "paquete sbt" desde la línea de comando de una pequeña aplicación Spark Scala, recibo el error de compilación "value $ no es miembro de StringContext" en la siguiente línea de código:
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
Intellij 13.1 me está dando el mismo mensaje de error. El mismo código fuente de .scala se compila sin problemas en Eclipse 4.4.2. Y también funciona bien con maven en un proyecto separado maven desde la línea de comando.
Parece que sbt no reconoce el signo $ porque me falta algún complemento en mi proyecto / plugins.sbt o alguna configuración en mi archivo build.sbt.
¿Estás familiarizado con este problema? Cualquier puntero será apreciado. Puedo proporcionar build.sbt y / project / plugins.sbt si es necesario.
En Spark 2.0+
Se puede usar $ -notation for columns mediante la importación implícita en el objeto SparkSession
( spark
)
val spark = org.apache.spark.sql.SparkSession.builder
.master("local")
.appName("App name")
.getOrCreate;
import spark.implicits._
entonces tu código con $ notación
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
import sqlContext.implicits._
asegurarse de import sqlContext.implicits._
Esto te da una implicit class StringToColumn extends AnyRef
Que se comenta como:
Convierte $ "col name" en una Columna.