我在用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)))
有人能告诉我怎么修吗?或者我怎样才能做到这一点?
暂无答案!
目前还没有任何答案,快来回答吧!