spark sql udf不能按预期工作

vhipe2zx  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(429)

我在用scala编程语言工作。我想从dataframe列中提取某些字段,这个列有json字符串。我还有structtype集合的列表,它告诉我们从特定行中提取哪个模式。我需要为不同的行提取不同的模式。schema的集合将包含许多行,但我只需要基于dataframe中的另一列(同一行)获取一个schema。这是我的密码。

df = df.withColumn("data", from_json(col("data"), getSchemaUDF(col("name"), events)))
  .....
  private def getSchemaUDF : UserDefinedFunction = udf(getSchema _)

  private def getSchema(field: String, schemas : Map[String, StructType]): StructType = {
    val schema = schemas.filter(x => x._1 == field)
    require(schema.size == 1, s"Multiple schemas found for ${field}")
    schema.head._2
  }

但我在这行中得到了一个错误:

df = df.withColumn("data", from_json(col("data"), getSchemaUDF(col("name"), events)))

Error:(127, 83) type mismatch;
 found   : Map[String,org.apache.spark.sql.types.StructType]
 required: org.apache.spark.sql.Column
      df = df.withColumn("data", from_json(col("data"), getSchemaUDF(col("name"), events)))

有人能告诉我怎么修吗?或者我怎样才能做到这一点?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题