2016-07-20 14 views
1

Ich habe diese Zeile:Umwandlung eine Spalte in einem RDD/Dataframe

val decryptedDFData = sqlContext.read.json(patientTable.select("data").map(row => decrypt(row.toString()))) 

, die gerade den „Daten“ -Spalte von einem anderen Datenrahmen „patientTable“ und gilt für Zeile meiner Entschlüsselungsfunktion Zeile auswählt und erzeugt einen weiteren Datenrahmen. Wie kann ich entweder: Wenden Sie die Verschlüsselungsfunktion auf den ursprünglichen Dataframe in dem Wissen, dass das Schema nicht behoben wird (aber das "Daten" -Attribut wird immer da sein) oder fügen Sie jede Zeile des neuen Dataframe als eine Struktur in ihr entsprechendes ein Reihe von vorher?

Antwort

3

Verwendung UDF:

import org.apache.spark.sql.types._ 
import org.apache.spark.sql.functions._ 

def decrypt(s: String) = s 
val decryptUDF = udf(decrypt _) 

patientTable.select(col("*"), decryptUDF(col("data").cast(StringType)))