转换 RDD/DataFrame 中的列

Transforming a column in an RDD/DataFrame

我有这一行:

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

它只是从另一个 DataFrame "patientTable" 中选择 "data" 列并逐行应用我的解密函数并创建另一个 DataFrame。我怎样才能:将加密函数应用于原始 DataFrame 知道模式不会被修复(但 "data" 属性将始终存在)或将新 DataFrame 的每一行作为结构插入到是之前的对应行吗?

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