2016-07-20 68 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)))