gpt4 book ai didi

scala - Spark 和 Scala : Generate DataSet (or Dataframe) with given size

转载 作者:行者123 更新时间:2023-12-02 01:18:10 24 4
gpt4 key购买 nike

出于评估目的,我需要一个函数来创建一个用随机数初始化的虚拟Dataset(或者,DataFrame)。列和行的维度应该被参数化

我想出了一个解决方案,但速度慢得离谱(10 行 100 列需要 5.3 秒):

def createDummyDataset(rows : Int, columns: Int, spark: SparkSession) = {
import spark.implicits._

var ds = Seq.fill(rows)(Random.nextDouble).toDF()
if (columns > 1) {
for (i <- 2 to columns) {
ds = ds.withColumn(i.toString, rand)
}
}
ds // return ds
}

这是因为 Spark 的架构,还是我做错了什么,有更好的方法吗?

我想更好的方法是定义某种矩阵并将其一次性转换为 Dataset。但我无法弄清楚。

系统:Spark 2.1.0、Scala 2.11.8、Ubuntu 16.04、i5-6300U、32GB RAM

最佳答案

通过向现有 DataFrame 添加列来执行此操作会导致大量与 Spark 相关的开销。

最好创建一个 2D 数组样式集合,然后将其并行化:

import org.apache.spark.sql.Row
import spark.implicits._

val data = (0 to rows).map(_ => Seq.fill(columns)(Random.nextDouble))
val rdd = sc.parallelize(data)
val df = rdd.map(s => Row.fromSeq(s)).toDF()

关于scala - Spark 和 Scala : Generate DataSet (or Dataframe) with given size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com