Ich habe mit der Konvertierung von RDDs zu DataFrames und wieder zurück gespielt. Zuerst hatte ich eine RDD vom Typ (Int, Int) namens DataPair. Dann habe ich ein Objekt mit Datenrahmen unter Verwendung von Spaltenüberschriften:So konvertieren Sie eine RDD [Row] zurück zu DataFrame
val dataFrame = dataPair.toDF(header(0), header(1))
Dann habe ich es von einem Datenrahmen zurück zu einem RDD umgewandelt werden:
val testRDD = dataFrame.rdd
die eine RDD vom Typ org.apache.spark zurückgibt. sql.Row (nicht (Int, Int)). Dann würde Ich mag es konvertieren zurück zu einem RDD .toDF verwenden, aber ich erhalte eine Fehlermeldung:
error: value toDF is not a member of org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
Ich habe versucht, ein Schema des Datentypen definieren (Int, Int) für testRDD, aber ich Art bekommen Mismatch Ausnahmen:
error: type mismatch;
found : org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
required: org.apache.spark.rdd.RDD[Data]
val testRDD: RDD[Data] = dataFrame.rdd
^
ich bereits
importiert habenimport sqlContext.implicits._
Ich fand es heraus, ich musste auf das Datenschema mit dem folgenden zuordnen: 'val df = testRDD.map {Fall Row (n1: Int, n2: Int) => Daten (n1, n2)}. ToDF() ' – TheElysian
Schön, es ist in der Tat eine Option. Die Lösung mit createDataFrame ist jedoch generischer und ermöglicht die Konvertierung, selbst wenn Sie nicht wissen, wie viele Felder der ursprüngliche Datenrahmen hat. –
Ich habe versucht, es zu verwenden, aber ich habe immer Fehler beim Überlauf der CreateDataFrame-Methode erhalten. Danke trotzdem. – TheElysian