当前位置: 首页 > 知识库问答 >
问题:

Spark-"sbt包"-"value$不是StringContext的成员"-缺少Scala插件?

任昊苍
2023-03-14

在为一个小型Spark Scala应用程序从命令行运行“sbt包”时,我在以下代码行中得到“value$is not a member of 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似乎无法识别$符号,因为我的项目/插件中缺少了一些插件。sbt文件或我的构建中的某些设置。sbt文件。

你熟悉这个问题吗?任何提示都将不胜感激。我可以提供构建。sbt和/或项目/插件。sbt(如需要)。

共有3个答案

孔建柏
2023-03-14

很好的答案,伙计们,如果解决导入是一个问题,那么这会起作用吗

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"))
葛威
2023-03-14

$-可以通过在对象(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")

华心思
2023-03-14

您需要确保导入sqlContext。隐含_

这使您可以使用隐式类StringToColumn扩展AnyRef

评论如下:

将$"colname"转换为列。

 类似资料:
  • 我正在尝试使用spark df读取spark中的CSV文件。文件没有标题列,但我想有标题列。如何做到这一点?我不知道我是否正确,我写了这个命令- 并将列名作为列的_c0和_c1。然后我尝试使用:val df1=df.with列重命名("_c0","系列")将列名更改为所需的名称,但我得到"with列重命名"不是单元上的成员。 PS:我已经导入了spark.implicits._和spark.sql

  • 我从这里得到上面的错误消息: 特别是从第二行。。进口是 akka版本是2.2.1,scala是2.10.2,我正在使用sbt 0.13来构建它。 编辑:我用 结果如下:

  • 我正试图在一个spark项目上使用sbt程序集。sbt编译和打包工作,但当我尝试sbt汇编时,我得到以下错误: plugins.sbt: 完整错误消息:

  • 我正在为弹性豆茎上的WordPress部署设置比特桶管道。 此错误消息在第行中弹出: 其他相关问题以及为什么它不能解决我的问题: 1 2:Bitbucket环境中没有/.aws/config 3:上面提到的错误消息 到目前为止,Bitbucket管道:

  • sbt 是一个用于构建 Scala 和 Java 项目的构建工具,要求 Java 1.6 或者更新版本。

  • 对于和的未处理插件异常,我收到一个错误: 未处理的异常:MissingPluginException(在channel plugins.flatter.io/shared_首选项上找不到方法getAll的实现)未处理的异常:MissingPluginException(在channel plugins.flatter.io/path_provider上找不到方法getApplicationSupp