簡體   English   中英

如何在斯卡拉星火使用UDF WHERE子句中

[英]How to use UDF in where clause in Scala Spark

我正在嘗試檢查Dataframe中的2個Double列是否在某種程度上相等,所以49.999999應該等於50。是否可以創建UDF並在where子句中使用它? 我在Scala中使用Spark 2.0。

您可以使用udf但沒有必要的:

import org.apache.spark.sql.functions._

val precision: Double = ???

df.where(abs($"col1" - $"col2") < precision)

udf調用會的工作方式相同,但效率較低

df.where(yourUdf($"col1", $"col2"))

假設ctx是SQL上下文

ctx.udf.register("areEqual", (x: Double, y: Double, precision : Double) => abs(x-y)< prescision

接着

df.where(areEqual($"col1",$"col2",precision))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM