更新时间:2022-12-14 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
配置是否显示包含敏感词的Spark SQL语句
配置场景
用户执行的SQL语句中可能会包含敏感信息(如用户密码等),若泄漏出去会存在一定的安全风险。此时,用户可以通过设置“spark.sql.redaction.string.regex”参数,在日志和Web UI上屏蔽包含敏感词的SQL关键词。
显示Spark SQL语句包含两部分:
- 在日志中显示SQL语句:
    
- Driver日志:在JDBCServer服务中,每通过Beeline执行一句SQL语句就会在Driver日志中打印对应的SQL语句。如“Running query 'show tables' with 0f8fee16-4291-4854-a7b4-b87a162f7cbb”。
 - eventLog日志:每个Spark应用只要开启了写eventLog功能(设置spark.eventLog.enabled=true),就会写eventLog事件,而使用JDBCServer和Spark SQL执行的SQL语句信息也都会打印在eventLog文件中。
 
 - 在Web UI上显示SQL语句:
    
- SparkUI:当执行SQL语句时,能在SparkUI页面的Jobs、Stages等标签页看到执行的SQL语句信息。
 - HistoryServer:HistoryServer通过读取eventLog文件的内容,将app信息展示在页面上。所以当eventLog文件中有SQL语句记录时,用户也就能在HistoryServer页面上看见对应的SQL语句。
 
 
配置描述
| 
        参数  | 
      
        描述  | 
      
        默认值  | 
     
|---|---|---|
| 
        spark.sql.redaction.string.regex  | 
      
        决定Spark生成的字符串的哪些部分是敏感词的正则表达式。当正则表达式匹配到字符串的敏感词部分时,该部分字符串将会使用字符串*********(redacted)替换。 
         说明: 
         此处需要配置为正则表达式格式。  | 
      
        pwd|password  | 
     
 
   - 当使用Spark Beeline时,需要重启JDBCServer,配置才会生效。当使用spark-sql时,需要重启spark-sql,配置才会生效。
 - 以上参数,仅对配置后执行的SQL语句生效,对配置前执行的SQL语句不生效。
 
   父主题: 场景化参数