有人告诉我,EXCEPT
是一项成本非常高的操作,应始终尽量避免使用 EXCEPT
。
我的用例 -
val myFilter = "rollNo='11' AND class='10'"
val rawDataDf = spark.table(<table_name>)
val myFilteredDataframe = rawDataDf.where(myFilter)
val allOthersDataframe = rawDataDf.except(myFilteredDataframe)
但是我很困惑,在这种用例中,我的选择是什么?
最佳答案
使用左反连接
如下-
val df = spark.range(2).withColumn("name", lit("foo"))
df.show(false)
df.printSchema()
/**
* +---+----+
* |id |name|
* +---+----+
* |0 |foo |
* |1 |foo |
* +---+----+
*
* root
* |-- id: long (nullable = false)
* |-- name: string (nullable = false)
*/
val df2 = df.filter("id=0")
df.join(df2, df.columns.toSeq, "leftanti")
.show(false)
/**
* +---+----+
* |id |name|
* +---+----+
* |1 |foo |
* +---+----+
*/
关于scala - Spark Scala 之外的更好替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63057443/