Performance SparkSQL—与多重比较相比,isIn()的性能

Performance SparkSQL—与多重比较相比,isIn()的性能,performance,apache-spark,apache-spark-sql,Performance,Apache Spark,Apache Spark Sql,在一个运行在大约6亿行上的SparkSQL程序中,我需要根据在其中一列上运行UDF的输出来过滤结果。以下哪项性能更好 选项A val result = myDataframe .filter((callUDF("getPrice", $"product") equalTo 1) || (callUDF("getPrice", $"product") equalTo 5)) 选项B val result = myDataframe .filter(callUDF(

在一个运行在大约6亿行上的SparkSQL程序中,我需要根据在其中一列上运行UDF的输出来过滤结果。以下哪项性能更好

选项A

val result = myDataframe
        .filter((callUDF("getPrice", $"product") equalTo 1) || (callUDF("getPrice", $"product") equalTo 5))
选项B

val result = myDataframe
        .filter(callUDF("getPrice", $"product").isIn(1,5))
product
是一个字符串,
getPrice()
从内存中的图形数据库中读取数据

本能地,我会说只运行一次UDF会更好,但我不知道运行
isIn()
的含义是什么


你同意我的说法吗?

我对Spark Sql没有太多的经验,但我只是在数百万行数据之间进行了连接,一行使用isin,另一行使用equalsto。equalsto的表现要好得多。在我的实验中,isin大约需要2-3小时,而equalsto大约需要30分钟