Ответ 1
Вам нужно убедиться, что вы import sqlContext.implicits._
Это дает вам implicit class StringToColumn extends AnyRef
Отмечается как:
Преобразует $col имя столбца в столбец.
При запуске пакета "sbt" из командной строки для небольшого приложения Spark Scala я получаю ошибку компиляции "значение $не является членом StringContext" в следующей строке кода:
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
Intellij 13.1 дает мне то же сообщение об ошибке. Тот же исходный код .scala компилируется без каких-либо проблем в Eclipse 4.4.2. А также он отлично работает с maven в отдельном проекте maven из командной строки.
Похоже, что sbt не распознает знак $, потому что мне не хватает какого-либо плагина в файле project/plugins.sbt или некоторых параметров в файле build.sbt.
Вы знакомы с этой проблемой? Любые указатели будут оценены. Я могу предоставить build.sbt и/или project/plugins.sbt, если это необходимо.
Вам нужно убедиться, что вы import sqlContext.implicits._
Это дает вам implicit class StringToColumn extends AnyRef
Отмечается как:
Преобразует $col имя столбца в столбец.
$- обозначение для столбцов может быть использовано путем импорта неявного объекта SparkSession
(spark
)
val spark = org.apache.spark.sql.SparkSession.builder
.master("local")
.appName("App name")
.getOrCreate;
import spark.implicits._
то ваш код с $notation
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
Отличный ответ, ребята, если проблема с импортом вызывает беспокойство, тогда эта работа будет
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"))