出於評估目的生成數據集(或數據幀),我需要創建一個功能的dummy- Dataset
(或者一個DataFrame
),用隨機數初始化。在列和行方面的尺寸應被參數星火和斯卡拉:給定大小
我想出了一個解決方案,但是這是荒謬的慢(5.3s爲10行100列):
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
在打擊。但我無法弄清楚。
系統:星火2.1.0,斯卡拉2.11.8,Ubuntu的16.04,i5-6300U,32GB的RAM
謝謝。你試過了嗎?它減少了10行和100列的執行時間,以3.3s(-61%)。但是,這仍然可以延長1000個電池的使用時間嗎? – Boern
是似乎一點就慢側。什麼是你定時 - 整個星火作業,或者將數據幀的只是初始化?初始化Seq的次序應該是次秒。我不希望Spark將這個大小的數據集分發超過3秒。多久沒有考慮到執行(0至行).MAP(_ => Seq.fill(列)(Random.nextDouble))。toDF()。rdd.collect()? – ImDarrenG
我正在初始化時間...此外,您的代碼導致一個'DataFrame'只有一個列持有一個數組數組:( – Boern