[英]Better Alternatives to EXCEPT Spark Scala
I have been told that EXCEPT
is a very costly operation and one should always try to avoid using EXCEPT
.有人告诉我
EXCEPT
是一项非常昂贵的操作,应该始终尽量避免使用EXCEPT
。 My Use Case -我的用例 -
val myFilter = "rollNo='11' AND class='10'"
val rawDataDf = spark.table(<table_name>)
val myFilteredDataframe = rawDataDf.where(myFilter)
val allOthersDataframe = rawDataDf.except(myFilteredDataframe)
But I am confused, in such use case, what are my alternatives?但我很困惑,在这种用例中,我的选择是什么?
Use left anti join
as below-使用
left anti join
如下 -
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 |
* +---+----+
*/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.