微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

转换数据帧列值并应用 SHA2 屏蔽逻辑

如何解决转换数据帧列值并应用 SHA2 屏蔽逻辑

我有一个数据框,其中包含来自 Hive 的属性表和主表。我想删除列,然后我想应用屏蔽逻辑 (SHA2)。

从 postgre DB 读取属性配置作为 Spark/scala 作业中的数据帧。

1

val propertydf = loading the property dataframe from postgre db

主 Hive 表

2

输出应该是

3

任何人,请帮我在 Spark/Scala 中编写代码。我无法转换 List[String] 并将其从数据帧配置传递给函数

解决方法

您可以操作列名称并根据需要选择它们:

val masking = propertydf.head(1)(0).getAs[String]("maskingcolumns").split(",")
val exclude = propertydf.head(1)(0).getAs[String]("columnstoexclude").split(",")

val result = df.select(
    masking.map(c => sha2(col(c).cast("string"),256).as(c)) ++ 
    df.columns.filterNot(c => masking.contains(c) || exclude.contains(c)).map(col)
    :_*
)

result.show(false)
+----------------------------------------------------------------+----------------------------------------------------------------+---+---+
|a                                                               |b                                                               |c  |d  |
+----------------------------------------------------------------+----------------------------------------------------------------+---+---+
|ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad|6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b|11 |cbc|
+----------------------------------------------------------------+----------------------------------------------------------------+---+---+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。