我试图基于与流中数据的联接从表中获取数据。
查询在单独的笔记本中正确执行,但是在此udf中,它抛出| java.lang.NullPointerException
UDF定义为
val usersOrgMap = users.join(orgs, Seq("orgid"), "left")
def getOrgId: (String => String) = { s =>
try {
((usersOrgMap.where($"userid" === s)).first().mkString(",").trim).toString
} catch {
case e: Exception => e.toString()
}
}
val getOrgIdUDF = udf(getOrgId)
并将其用作
val messages =
incomingStream
.withColumn("OrgId",getOrgIdUDF(get_json_object(($"body").cast("string"), "$.UserGuidTrimmed")))
.select("OrgId")
messages.writeStream.outputMode("append").format("console").option("truncate", false).start().awaitTermination()
是否有更好的方法可以使用流中的json数据从表中获取数据?