hadoop - hive : Replace string/pattern in row if it exists else do nothing

标签 hadoop hive apache-spark-sql hiveql

我有一张表 A,其中包含 ID、姓名、年龄。

> id       name    age
> {20}    Joan     12 
> 3       James    12 
> 12       Jill   12
> {54}     Adam    12 
> {10}     Bill    12

我需要移除 {} 周围的“id”字段。 我试过这个:

translate(regexp_extract(id, '([^{])([^}])', 2), '{', '')

它有效,但对于没有 {} 的值返回 null。

id
3
12

有没有办法让我得到输出为???

id
20
3
12
54
10

最佳答案

您可以使用 regexp_replace udf 来删除“{}”,例如:

select regexp_replace(id, '\\{|\\}','');

关于hadoop - hive : Replace string/pattern in row if it exists else do nothing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35494492/

相关文章:

Hadoop - 如何从实现可写接口(interface)切换到使用 Avro 对象?

apache-spark - Spark作业可在两个不同的HDFS环境中工作

hadoop - Hive - 内存不足异常 - Java 堆空间

date - 如何在 Hive 的范围之间按顺序创建日期表?

scala - 如何在 spark/scala 中编写或调用 -SQL 游标?

scala - 比较 Scala Spark 中的两个数组列

configuration - 能够限制 hadoop hive mapred 作业的最大 reducer ?

hadoop - 缺少 Windows 10 的 hadoop 安装

python - 如何在 Spark (Python) 中对我的 Row 对象的字段进行排序

macos - intelliJ IDEA 设置中的 Mac 上的 Hadoop