2016-06-14 5 views
0

Wie füge ich eine Spalte voller NA in einem SparkRDataFrame hinzu? Dies funktioniert nicht.Hinzufügen einer Spalte voller NAs in Sparkr

> df <- data.frame(cola = 1:4) 
> sprkrDF <- createDataFrame(sqlContext, df) 
> sprkrDF$colb <- NA 
Error: class(value) == "Column" || is.null(value) is not TRUE 

Dank


NB: Ich will es hinzuzufügen, direkt an den SparkRDataFrame, so ist dies nicht die Lösung, die ich suche:

> df <- data.frame(cola = 1:4, colb = NA) 
> sprkrDF <- createDataFrame(sqlContext, df) 

Antwort

2

Wir verwenden könnten lit() um eine neue Spalte zu erstellen und sie mit NA zu füllen.

sprkrDF <- withColumn(sprkrDF, "colb", lit(NULL)) 
+0

Ich bekomme '16/06/14 15:11:15 WARN RBackendHandler: kann nicht Finde die passende Methodenklasse org.apache.spark.sql.functions.lit. Kandidaten sind: 16/06/14 15:11:15 WARN RBackendHandler: leuchtet (Klasse java.lang.Object) 16/06/14 15:11:15 FEHLER RBackendHandler: leuchtet auf org.apache.spark.sql. Funktionen fehlgeschlagen Fehler in InvokeJava (isStatic = TRUE, Klassenname, Methodenname, ...): ' –

+0

versuchen Sie' NULL' anstelle von 'NA', siehe Bearbeiten. – mtoto

+0

Ja, ich habe festgestellt, dass 'NA' in' SparkR' nicht existiert '' DataFrame's und 'NULL' müssen verwendet werden ... Danke. –

0

Vereinbart, dass @ Mtotos Antwort die richtige Antwort auf die spezifische Frage ist, die Sie gestellt haben. Ein alternativer Ansatz ist das Auffüllen der NA-Werte im R data.frame, bevor Sie den Spark DataFrame erstellen. Arbeiten in Basis R kann einige Aufgaben erleichtern, wenn (a) Sie keine verteilte Verarbeitungsleistung benötigen und (b) Sie bestimmte Zeilen in den Daten indizieren möchten.

df <- data.frame(cola = 1:4) 
df$colb <- NA 
sprkrDF <- createDataFrame(sqlContext, df) 

Freut mich zu sehen, dass jemand anders gelernt hat, R- und Spark-Datenframe-Namen eindeutig zu markieren! ... Ich benutze immer rdf für "R data.frame" und sdf für "Spark DataFrame", um meinen Code lesbarer zu machen :-)

Verwandte Themen