替换 Hive 表中所有列中的字符

Posted

技术标签:

【中文标题】替换 Hive 表中所有列中的字符【英文标题】:Replace a character from all columns in Hive tables 【发布时间】:2019-04-15 22:30:12 【问题描述】:

我需要对我的 Hive 表中的所有列执行正则表达式替换功能。 有没有办法在不单独调用每一列的情况下对所有列执行操作?

【问题讨论】:

你可以写一个shell脚本来做。 【参考方案1】:

使用 regexp_replace。以下是 Hive REGEXP_REPLACE 函数的语法。 regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT);

【讨论】:

【参考方案2】:
    val col : DataFrame = hiveContext.sql("show columns in dbname.table_name")
    val arry  = col.collectAsList().toArray

    def regexpReplace(x: AnyRef): String =
    return "select regexp_replace(" + x + ",[^0-9a-zA-Z]," + "' ')  from dbname.tbl_name"

  for(  col <- arry)
    
      val res = regexpReplace(col.toString.substring(1,x.toString.length-1))
      sqlContext.sql(res)
    

【讨论】:

以上是关于替换 Hive 表中所有列中的字符的主要内容,如果未能解决你的问题,请参考以下文章

替换Hive表中所有列的字符

如何用另一个表中的匹配值替换/更新列中每个字符串的所有实例?

hive怎样取出字段包含的所有特殊字符

用另一个表中同一列的值替换列中的字符串值

如何替换整个数据库中的字符串(数据值)?

Postgresql中怎么把某列中的特定字符进行特定替换