sparksqldataframes-join的where子句中使用$columnname在sparkshell中工作,但不编译

k10s72fa  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(282)

当我在sparkshell中给出以下sparksql语句时,它运行良好。但是当我尝试用sbt构建jar文件时,同样的语句在构建时给出了一个错误。 val df3=df1.join(df2).where($"columnname1" === $"columnname2") 原因是什么?
我得到的错误是: value $ is not a member of StringContext 我正在导入以下内容。我是否需要导入其他专门用于生成的内容?
import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ 到目前为止,我改变了线如下,它建立良好,运行良好,以及虽然。 val df3=df1.join(df2).where(df1("columnname1") === df2("columnname2")) 我想知道为什么早期的语法在构建中不起作用,以及我在构建中遗漏了什么。

ws51t4hk

ws51t4hk1#

别忘了那个
import implicits ,已在中导入 spark-shell .

val spark = SparkSession.builder().appName("test")
  .master("local").getOrCreate()

import spark.implicits._

文件编号:

/**
   * Converts $"col name" into a [[Column]].
   *
   * @since 2.0.0
   */
  implicit class StringToColumn(val sc: StringContext) {
    def $(args: Any*): ColumnName = {
      new ColumnName(sc.s(args: _*))
    }
  }

相关问题