2016-04-25 4 views
0

Ich habe eine Variable vom Typ Seq[Seq[(Double, Double)]]:Wie wird die Funktion verwendet, die RDD [(Double, Double)] als Eingabe für einen Fall von Seq [Seq [(Double, Double)]] erwartet?

val output: Seq[Seq[(Double, Double)]] = runStreams(ssc, numBatches, numBatches) 

Jetzt möchte ich die Funktion RegressionMetrics die RDD[(Double, Double)] anzuwenden als Eingabe verwendet:

val metrics = new RegressionMetrics(output) 

Wie Seq[Seq[(Double, Double)]] zu RDD zu transformieren [(Double, Double)] `, um Funktionen der Klasse RegressionMetrics nutzen zu können?

Antwort

1

RDD ist Abstraktion des Apache Funken für eine Distributed Resilient Dataset

ein RDD Sie eine Instanz von SparkContext, erstellen müssen, die als eine „Verbindung“ gedacht werden kann oder „Griff“ zu einem Cluster mit Apache Spark.

Unter der Annahme,:

  • Sie haben ein SparkContext instanziiert
  • Sie möchten Ihre Eingabe als „flat“ Folge von (Double, Double) Werte behandeln, ignorieren die Art und Weise diese sind zur Zeit „Split“ in Untersequenzen in Seq[Seq[(Double, Double)]]

Sie können eine RDD wie folgt erstellen:

val sc: SparkContext = ??? 
val output: Seq[Seq[(Double, Double)]] = ??? 

val rdd: RDD[(Double, Double)] = sc.parallelize(output.flatten) 
+0

Ok, danke. Ich benutze Seq zu Testzwecken. Also, verstehe ich richtig, dass im Falle der Verwendung einiger Daten auf der Festplatte kann ich es in RDD lesen und Seq ersetzen? – Klue

+0

Richtig! Zum Testen: Zunächst können Sie den lokalen Modus von Spark verwenden, um einfach einen unabhängigen SparkContext zu erstellen. Zweitens können Sie entweder 'parallelize' verwenden, wie hier vorgeschlagen, oder die Daten aus der Datei direkt über' SparkContext.textFile' laden –