spark-hiveudf使用的是sparksql,而不是dataframe

q9yhzks0  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(333)

如果我在sparksql中使用hiveudf,它就可以工作了。如下所述。

val df=List(("$100", "$90", "$10")).toDF("selling_price", "market_price", "profit")
df.registerTempTable("test")
spark.sql("select default.encrypt(selling_price,'sales','','employee','id') from test").show

但是,以下操作不起作用。

//following is not working. not sure if you need to register a function for this 
val encDF = df.withColumn("encrypted", default.encrypt($"selling_price","sales","","employee","id"))
encDF.show

错误

error: not found: value default
j9per5c4

j9per5c41#

只有通过sparksql访问配置单元udf时,它才可用。它在scala环境中不可用,因为它没有在那里定义。但是您仍然可以使用 expr :

df.withColumn("encrypted", expr("default.encrypt(selling_price,'sales','','employee','id')"))

相关问题