2016-07-20 2 views
1

У меня есть эта строка:Преобразование столбца в RDD/DataFrame

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

Который только выбирает столбец «данных» из другого DataFrame «patientTable» и применяет свое дешифрование функцию построчно и создает другой DataFrame. Как я могу: применить функцию шифрования к исходному 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))) 
Смежные вопросы