【问题标题】:[Spark][Scala][DataFrame][withColumn] cannot resolve symbol "when" when using "when" in WithColumn[Spark][Scala][DataFrame][withColumn] 在 WithColumn 中使用“when”时无法解析符号“when”
【发布时间】:2020-10-04 19:49:34
【问题描述】:

我正在创建一个数据框并对特定列的数据进行一些修改。

修改要求 -

  • 如果有任何行/数据具有 NULL 值,则将其替换为“未知”(字符串类型)。

所以我的代码 -

val rawDF = reader.readFrmDatabase(DatabaseQueries.rawQuery,ConfigUtils.getDatabaseReadProps)
                  .withColumn("osrelease", when (col("osrelease").isNull || col("osrelease") === "","unknown")
                  .otherwise("osrelease"))

函数 readFrmDatabase 将 Query:String & Configurations: Map[String,String] 作为参数并返回一个数据帧。示例 -

@throws[Exception]
  def readFrmDatabase(query: String, dbProps: Map[String, String], optionalArgs: Option[Map[String, String]]=None)(implicit spark: SparkSession): DataFrame = {
    logInfo("Reading From Database")

    val outDF = Try {
      spark.read.format("jdbc")
        .options(dbProps)
        .options(optionalArgs.getOrElse(Map.empty))
        .option("dbTable",s"""(${query})""")
        .load()
    }
match {
      case Success(success) => success
      case Failure(error) => logError(s"Error while reading Database table $query", error)
        throw new Exception(s"""Error while reading Database table : $query""", error)
    }
    outDF
  }

问题是当我使用 withColumn 时,它接受第一个参数为 colName:String,但第二个参数不接受。 我曾尝试使用 col(") & $"" 但其中任何一个都不起作用。

我遇到了这样的错误 - (在图片中,它是 RED COLORED

  • 使用 withColumn("<column_name>",when (col("<column_name>").isNull,"unknown").otherwise("<column_name>")) THEN 时,错误为 - Cannot resolve symbol whenCannot resolve symbol col 等。
    • 使用withColumn("<column_name>",when ($"<column_name>".isNull,"unknown).otherwise("<column_name>")) THEN 时,错误为-Cannot resolve symbol whenvalue$is not a member of StringContext

请帮我找出这里的问题。提前致谢。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    你缺少导入

    import org.apache.spark.sql.functions._
    

    如果你想使用$ 然后导入

    val spark = SparkSession.builder.master("local[*]").getOrCreate
    import spark.implicits._
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2018-12-26
      • 2021-12-04
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多