【问题标题】:convert dataframe column values and apply SHA2 masking logic转换数据框列值并应用 SHA2 屏蔽逻辑
【发布时间】:2021-06-23 12:50:55
【问题描述】:

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

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

val propertydf = loading the property dataframe from postgre db

主 Hive 表

输出应该是

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

【问题讨论】:

    标签: scala apache-spark apache-spark-sql scala-collections


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2017-09-30
      相关资源
      最近更新 更多