2016-05-11 30 views
7
val tvalues: Array[Double] = Array(1.866393526974307, 2.864048126935307, 4.032486069215076, 7.876169953355888, 4.875333799256043, 14.316322626848278) 
val pvalues: Array[Double] = Array(0.064020056478447, 0.004808399479386827, 8.914865448939047E-5, 7.489564524121306E-13, 2.8363794106756046E-6, 0.0) 

Ben Spark Scala'da birden çok diziden DataFrame nasıl oluşturulur?

Tvalues    Pvalues 
1.866393526974307  0.064020056478447 
2.864048126935307  0.004808399479386827 
......     ..... 

Bugün itibarıyla i Scala StringBuilder ile çalışıyorum, ben aşağıdaki gibi bu Diziler Bir DataFrame inşa etmek gerekir, yukarıdaki gibi iki Diziler var. beklendiği gibi gitmez. Bunun için bana yardım edin lütfen.

cevap

5

örneği

val df = sc.parallelize(tpvalues zip pvalues).toDF("Tvalues","Pvalues") 

için deneyin ve dizilerini bir RDD elde parallelize kullanılması ve böylece

scala> df.show 
+------------------+--------------------+ 
|   Tvalues|    Pvalues| 
+------------------+--------------------+ 
| 1.866393526974307| 0.064020056478447| 
| 2.864048126935307|0.004808399479386827| 
| 4.032486069215076|8.914865448939047E-5| 
| 7.876169953355888|7.489564524121306...| 
| 4.875333799256043|2.836379410675604...| 
|14.316322626848278|     0.0| 
+------------------+--------------------+ 

- birinci dizinin ilk eleman, başka bir dizi ikinci eleman - satırların bir veri çerçevesine dönüştürülür, her bir tuple için bir satır.

Güncelleme

örneği 4 diziler için dataframe'ing birden diziler (aynı boyutta tümü), için,

case class Row(i: Double, j: Double, k: Double, m: Double) 

val xs = Array(arr1, arr2, arr3, arr4).transpose 
val rdd = sc.parallelize(xs).map(ys => Row(ys(0), ys(1), ys(2), ys(3)) 
val df = rdd.toDF("i","j","k","m") 
+0

hi karaağaç düşünün ben bu nasıl böyle dört diziler olduğunu varsayalım bunu yapabilir miyim? – Sam

+0

'val xs = Array (a1, a2, a3, a4) .tr 've sonra her iç içe dizi yapısı için, sınıfları paralel hale getirin ve sonra da DF (...). – elm

+0

Üzgünüm @elm, bunu anlamıyorum, bunun için bir örnek verebilir misiniz? Beni affedin, scala kıvılcımı almak için yeniyim. val xs = Array (a1, a2, a3, a4) .puan "sc.parallelize (xs (0) zip xs (1), xs (2), xs (3)). toDF (" a ",") b "," c "," d ") '. Bu ben denedim kod – Sam