如何使用udf从表中计算数据

时间:2019-02-14 06:29:26

标签: scala apache-spark azure-databricks

我试图基于与流中数据的联接从表中获取数据。

查询在单独的笔记本中正确执行,但是在此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数据从表中获取数据?

0 个答案:

没有答案