Как заменить шаблон, содержащий '$' в строке в Spark Sql - PullRequest
0 голосов
/ 21 октября 2018

У меня есть строка "$ 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 голосов
/ 22 октября 2018

regexp_replace (str, regexp, rep) - Заменяет все подстроки str, которые соответствуют regexp, на rep.

Str должен быть столбцом типа string.

0 голосов
/ 22 октября 2018

Первый аргумент в функции regex_replace является столбцом.Таким образом, вы должны передать имя столбца, а не буквальную строку.Приведенный ниже код отлично работает в режиме Spark.

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

Ниже приведены результаты.

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

...