scala - 复制 Spark Row N 次

标签 scala apache-spark

我想在 DataFrame 中复制一行,我该怎么做?

例如,我有一个由 1 行组成的 DataFrame,我想制作一个具有 100 个相同行的 DataFrame。我想出了以下解决方案:

  var data:DataFrame=singleRowDF

   for(i<-1 to 100-1) {
       data = data.unionAll(singleRowDF)
   }

但这引入了许多转换,并且我的后续操作似乎变得非常缓慢。还有另一种方法吗?

最佳答案

您可以添加一个字面值为大小为 100 的 Array 的列,然后使用 explode使其每个元素创建自己的行;然后,去掉这个“虚拟”列:

import org.apache.spark.sql.functions._

val result = singleRowDF
  .withColumn("dummy", explode(array((1 until 100).map(lit): _*)))
  .selectExpr(singleRowDF.columns: _*)

关于scala - 复制 Spark Row N 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397740/

相关文章:

Scala 函数式接口(interface)特征

Scala 惰性集合增长

unit-testing - 在 ScalaTest 中 `should` 、 `can` 、 `must` 之间有什么区别

scala - 仅交叉构建多项目 sbt 构建的一部分

apache-spark - 200 个默认分区难题的 Spark.sql.shuffle.partitions

scala - Spark 和 Scala : saveAsTextFile() exception

Scala理解 future 和选择

python - 教程中出现多个 SparkContexts 错误

apache-spark - Spark 异步接口(interface)的部分结果?

scala - 如何找到HDFS上存在的文件的正确URI