Spark - "sbt package" - "value $ is not a member of StringContext" - 缺少 Scala 插件?
Spark - "sbt package" - "value $ is not a member of StringContext" - Missing Scala plugin?
当从小型 Spark Scala 应用程序的命令行 运行 "sbt package" 时,我在以下代码行中收到 "value $ is not a member of StringContext" 编译错误:
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
Intellij 13.1 给我同样的错误信息。在 Eclipse 4.4.2 中编译相同的 .scala 源代码没有任何问题。而且它在命令行的单独 maven 项目中与 maven 一起工作得很好。
看起来 sbt 无法识别 $ 符号,因为我在我的 project/plugins.sbt 文件中缺少一些插件或在我的 build.sbt 文件中缺少一些设置。
你熟悉这个问题吗?任何指针将不胜感激。如果需要,我可以提供 build.sbt and/or project/plugins.sbt。
您需要确保 import sqlContext.implicits._
这让你 implicit class StringToColumn extends AnyRef
评论为:
Converts $"col name" into an Column.
伙计们,回答得好,如果解决导入是一个问题,那么这项工作是否有效
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"))
在 Spark 2.0+
$-notation for columns 可以通过导入 implicit on SparkSession
object (spark
)
来使用
val spark = org.apache.spark.sql.SparkSession.builder
.master("local")
.appName("App name")
.getOrCreate;
import spark.implicits._
然后你的代码用 $ 表示法
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
当从小型 Spark Scala 应用程序的命令行 运行 "sbt package" 时,我在以下代码行中收到 "value $ is not a member of StringContext" 编译错误:
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")
Intellij 13.1 给我同样的错误信息。在 Eclipse 4.4.2 中编译相同的 .scala 源代码没有任何问题。而且它在命令行的单独 maven 项目中与 maven 一起工作得很好。
看起来 sbt 无法识别 $ 符号,因为我在我的 project/plugins.sbt 文件中缺少一些插件或在我的 build.sbt 文件中缺少一些设置。
你熟悉这个问题吗?任何指针将不胜感激。如果需要,我可以提供 build.sbt and/or project/plugins.sbt。
您需要确保 import sqlContext.implicits._
这让你 implicit class StringToColumn extends AnyRef
评论为:
Converts $"col name" into an Column.
伙计们,回答得好,如果解决导入是一个问题,那么这项工作是否有效
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"))
在 Spark 2.0+
$-notation for columns 可以通过导入 implicit on SparkSession
object (spark
)
val spark = org.apache.spark.sql.SparkSession.builder
.master("local")
.appName("App name")
.getOrCreate;
import spark.implicits._
然后你的代码用 $ 表示法
val joined = ordered.join(empLogins, $"login" === $"username", "inner")
.orderBy($"count".desc)
.select("login", "count")