如何在Spark Sql中替换字符串中包含'$'的模式

时间:2018-10-21 18:58:58

标签: sql apache-spark apache-spark-sql

我有一个字符串“ $ urlhjkj”, 我希望将其“ $ url”部分替换为“ ssss” 尝试了以下操作,但不起作用:

spark.sql(s"""select regexp_replace("$$urlhjkj","$$url","ssss") """).first(){0}

我什至尝试:

 spark.sql(s"""select regexp_replace("$$urlhjkj","\\u0024url","ssss") """).first(){0}

但这也不起作用。

我想念什么? 在配置单元中,以下内容可以完美工作:

select regexp_replace("$urlhjkj","\\u0024url","ssss")

2 个答案:

答案 0 :(得分:0)

regex_replace函数中的第一个参数是一列。因此,您必须传递列名,而不是文字字符串。下面的代码可以在Spark中正常工作。

df.withColumn("test1", lit("$$urlhjkj"))
  .withColumn("test", regexp_replace(col("test1"), "\\$\\$url", "ssss"))

下面是结果。

|test1 |test | +---------+--------+ |$$urlhjkj|sssshjkj| |$$urlhjkj|sssshjkj| |$$urlhjkj|sssshjkj|

答案 1 :(得分:0)

  

regexp_replace(str,regexp,rep)-用rep替换所有与regexp匹配的str的子字符串。

Str应该是字符串类型的列。