scala - Spark Scala 之外的更好替代方案

标签 scala apache-spark

有人告诉我,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/

相关文章:

apache-spark - 无法更改 spark-cassandra-connector 中的身份验证

dataframe - pyspark中有没有一种方法可以计算唯一值

java - 如何使用 IntelliJ 解决 Scala 中的异常?

java - 在Spark Dataset API上使用汇总和分组依据

java - RDD join : After joining two different pair RDDs, 结果RDD键值和顺序发生了变化?

scala - 比较 Scala Spark 中的两个数组列

scala - 将自定义类型从 F# 转换为 Scala

scala - 如何更改数据框列列表的列类型

java - Akka Actors - 锁定单个资源请求

scala - 具有Java库的Scala Gradle控制台应用程序