转换dataframe列值并应用sha2掩蔽逻辑

polkgigr  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(323)

我有一个dataframe,它包含hive中的属性表和主表。我想删除列,然后应用掩蔽逻辑(sha2)。
在spark/scala作业中将属性配置作为Dataframe从postgre db读取。
val propertydf = loading the property dataframe from postgre db 主配置单元表

输出应该是

任何人,请帮我写一个spark/scala代码。我无法转换list[string]并从dataframe config将其传递给函数。

xxhby3vn

xxhby3vn1#

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

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|
+----------------------------------------------------------------+----------------------------------------------------------------+---+---+

相关问题