在读取dataframe之后,我需要清空一些列(包含pii信息的列),但保留原始的列数据类型。
我试过这个:
implicit class DataFrameImplicits (dataFrame: DataFrame) {
def withPIIColumnsNullified(piiCols : Seq[String]) : DataFrame = {
piiCols.foldLeft(dataFrame) { (outputDf, piiCol) => {
outputDf.withColumn(piiCol, it(null))
}
}
}
}
按照我的逻辑:
val piiCols = //column list needs to be nullified
var df = //read the datafrom HDFS
df = df.withPIIColumnsNullified(piiCols)
但上面的方法将原来的列类型更改为“null类型”,从而无法保存为parquet。
如何在进行转换时保留原始数据类型?
1条答案
按热度按时间bybem2ql1#
试试下面的代码。
你必须通过
Seq[(String,String)]
至withPIIColumnsNullified
功能。第一个字符串是
column name
&第二个字符串是column data type
. 在函数内部,用第二个参数的值强制转换该列。