为什么KeyValueGroupedDataset的flatMapGroups在本地运行时给出错误的结果?

问题描述 投票:0回答:1

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 笔记本中运行相同的查询会得到预期的结果:

scala apache-spark apache-spark-dataset
1个回答
0
投票

我现在面临同样的问题,我正在使用此解决方法:

ds.groupByKey(x => x.id)
  .mapGroups((key, iter) => {...})
  .flatMap(identity)
© www.soinside.com 2019 - 2024. All rights reserved.