有一些数据存在一些敏感数据,需要进行一些特殊处理,比如身份证号,可以用hash算法或者md5进行加密,我用的处理方式是将加密算法自定义成udf函数,拿MD5举例子,直接上代码
//加密算法
def hashMD5(content: String): String = {
val md5 = MessageDigest.getInstance("MD5")
val encoded = md5.digest((content).getBytes)
encoded.map("%02x".format(_)).mkString
}
//dataset:数据集 colName:要加密的字段名称 alias加密字段之后的列名
def columnWithMD5(dataset:Dataset[Row],colName:String,alias:String):Dataset[Row]={
val my_udf = udf(hashMD5 _)
dataset.withColumn(alias,my_udf(col(colName)))
}