在 Hive 视图中屏蔽子字符串

Masking a Substring in Hive Views

我需要在 Hive Table 之上创建一个视图,屏蔽特定列中的数据。 Table 有一列字符串类型。该特定列中的数据具有 JSON 结构。我需要屏蔽特定字段的值,比如 'ip_address'

{"id":1,"first_name":"john","last_name":"doe","email":"sample@123.com","ip_address":"111.111.111.111"}

预计:

{"id":1,"first_name":"john","last_name":"doe","email":"sample@123.com","ip_address":null}

这些是我试过的少数Built-in Hive Functions,它们似乎对我的事业没有帮助。

此外,我认为子字符串和 regexp_Extract 在这里没有用,因为字段值的位置并不总是预先确定的,而且我不熟悉正则表达式。

PS:如果能帮助我避免编写新的 UDF,我们将不胜感激。

regexp_replace:

select regexp_replace(column_name,'"ip_address":".*?"', '"ip_address":null') as column_name 适用于任何职位。

您可以在:前后添加任意数量的可选空格:

regexp_replace(column_name,'"ip_address" *: *".*?"', '"ip_address":null')

正则表达式 '"ip_address" *: *".*?"' 含义:

"ip_address" - 字面意思是“ip_address”

* - 0 个或更多空格(在 json 中允许)

: - 字面上的 :

* - 0 个或更多空格

".*?" - 双引号内任意数量的任意字符(非贪婪)。

如果您想用一些计算值替换值,例如使用 sha256 进行混淆,而不是仅使用 null,请参阅类似问题: