在 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,它们似乎对我的事业没有帮助。
- 面具
- get_json_object
- STR_TO_MAP
- if 子句
此外,我认为子字符串和 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,请参阅类似问题:
我需要在 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,它们似乎对我的事业没有帮助。
- 面具
- get_json_object
- STR_TO_MAP
- if 子句
此外,我认为子字符串和 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,请参阅类似问题: