KeyValueGroupedDataset 的 flatMapGroups 在本地运行时似乎给出了错误的结果。在 Databricks 笔记本中运行相同的查询时,它会给出正确的结果。我的本地 Spark 设置是否存在任何可能导致此问题的错误配置?这是 Spark 中的错误吗?
这是一个最小的复制案例:
import org.apache.spark.sql.SparkSession
object FlatMapGroupsBug {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession.builder
.appName("Bug reproduction")
.master("local")
.getOrCreate()
import spark.implicits._
Seq(1, 2).toDS
.groupByKey(x => x)
.flatMapGroups((_, _) => Seq(1, 2, 3))
.show
spark.stop()
}
}
这是在 IntelliJ 本地运行或使用
sbt
运行时的结果:
+-----+
|value|
+-----+
| 3|
| 3|
| 3|
| 3|
| 3|
| 3|
+-----+
在 Databricks 笔记本中运行相同的查询会得到预期的结果:
我现在面临同样的问题,我正在使用此解决方法:
ds.groupByKey(x => x.id)
.mapGroups((key, iter) => {...})
.flatMap(identity)