2016-07-20 102 views
1

轉換一個專欄中,我有這樣一行:在RDD /數據幀

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

剛剛從另一個數據幀「patientTable」選擇「數據」欄和行適用我的解密功能行並創建另一個數據幀。我該怎麼做:將加密函數應用於原始DataFrame,以瞭解架構不會被修復(但「data」屬性將始終存在)或將新DataFrame的每一行作爲結構插入到相應的對應從前排?

回答

3

使用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)))