2015-09-11 11 views

Antwort

30

einfach:

val rows: RDD[Row] = df.rdd 
+2

, wenn Sie „nicht gefunden Typ“ entweder für RDD erhalten oder diese Macht Row help: 'val Zeilen: org.apache.spark.rdd.RDD [org.apache.spark.sql.Row] = df.rdd' – Boern

+1

Um Boerns Antwort zu erweitern, fügen Sie die folgenden zwei Importbefehle hinzu: import org.apache.spark .rdd.RDD import org.apache.spark.sql.Row – Ravi

2

Verwenden df.map(row => ...) die Datenrahmen zu einer RDD konvertieren, wenn Sie eine Zeile in eine andere RDD Element zuordnen möchten. Zum Beispiel

df.map(row => (row(1), row(2))) 

gibt Ihnen ein gekoppeltes RDD, wo die erste Spalte der df der Schlüssel ist, und die zweite Spalte des df ist der Wert.

1

Ich suchte nur nach meiner Antwort und fand diesen Beitrag.

Jean 's Antwort zu absolut korrekt, fügte hinzu, dass "df.rdd" wird eine RDD [Zeilen] zurückgeben. Ich muss split() anwenden, sobald ich RDD bekomme. Dafür brauchen wir RDD [Row} bis RDD [Zeichenfolge]

val opt=spark.sql("select tags from cvs").map(x=>x.toString()).rdd 
-1

Fro mich arbeiten noch einfachere Methode zu konvertieren:

// Data frame creation from csv 
//----------------------------------------------------------------------------------------------------------------- 
val sacramentoDF = sqlContext.read 
    .format("com.databricks.spark.csv") 
    .option("header", "true") // Use first line of all files as header 
    .option("inferSchema", "true") // Automatically infer data types 
    .load("src/main/data/Sacramento.csv") 

// RDD creation from Data frame 
//----------------------------------------------------------------------------------------------------------------- 
val sacramentoRDD = sacramentoDF.rdd 
+0

1) Databricks-Paket wird nicht benötigt auf Spark 2, das Sie upgraden sollten, wenn Sie es nicht benutzen. 2) 'sacramentoDF.rdd' ist nur das, wonach die Frage gefragt wurde, und das ist bereits die akzeptierte Antwort –

Verwandte Themen