scala - 根据条件拆分 Spark DataFrame

标签 scala apache-spark dataframe apache-spark-sql

我需要类似于 randomSplit 函数的东西:

val Array(df1, df2) = myDataFrame.randomSplit(Array(0.6, 0.4))

但是,我需要根据 bool 条件拆分 myDataFrame。是否存在类似以下内容?
val Array(df1, df2) = myDataFrame.booleanSplit(col("myColumn") > 100)

我不想做两个单独的 .filter 调用。

最佳答案

不幸的是,DataFrame API 没有这样的方法,要按条件拆分,您必须执行两个单独的 filter转换:

myDataFrame.cache() // recommended to prevent repeating the calculation

val condition = col("myColumn") > 100
val df1 = myDataFrame.filter(condition)
val df2 = myDataFrame.filter(not(condition))

关于scala - 根据条件拆分 Spark DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41960052/

相关文章:

scala - 函数式风格提前退出深度优先递归

scala - Scala 和 Akka 中的 Future

apache-spark - 计算 spark Dataframe 中的新列,使用 pyspark 将 df1 中的标记列表列与 df2 中的文本列交叉

python - 使用 pandas 数据框列中的值更改 DateTime 对象的日期

scala - Akka 中灵活的数据库 session 、效率和线程

java - 在play框架的scala模板中转义sql保留字 "type"

java - 基于 Spark 的应用程序在 JDK 8 中失败?

apache-spark - Spark中执行器和容器的区别

pandas - "Can not convert a ndarray into a Tensor or Operation"在 tensorflow 中使用 pandas 数据帧

python - 如何访问 pandas DataFrame 中除第一列之外的所有列?