Ho giocato con la conversione di RDD in DataFrames e viceversa. Innanzitutto, ho avuto un RDD di tipo (Int, Int) chiamato dataPair. Poi ho creato un oggetto dataframe con intestazioni di colonna utilizzando:Come convertire un RDD [Row] di nuovo in DataFrame
val dataFrame = dataPair.toDF(header(0), header(1))
Poi ho convertito da un dataframe di nuovo ad un RDD utilizzando:
val testRDD = dataFrame.rdd
che restituisce un RDD di tipo org.apache.spark. sql.Row (not (Int, Int)). Poi mi piacerebbe riconvertirlo in un RDD utilizzando .toDF ma ottengo un errore:
error: value toDF is not a member of org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
ho provato la definizione di uno schema del tipo di dati (int, int) per testRDD, ma ho tipo eccezioni disadattamento:
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
^
ho già importato
import sqlContext.implicits._
L'ho capito, avevo bisogno di mappare allo schema Dati usando il seguente: 'val df = testRDD.map {riga del caso (n1: Int, n2: Int) => Dati (n1, n2)}.() ' – TheElysian
Bello, è davvero un'opzione. La soluzione con createDataFrame è più generica, consentendo la conversione anche se non si conoscono quanti campi ha il dataframe originale. –
Ho provato ad usarlo, ma ho continuato a ricevere errori riguardo il sovraccarico del metodo createDataFrame. Grazie comunque. – TheElysian