Spark - используйте regexp_replace для замены нескольких групп - PullRequest
0 голосов
/ 11 января 2019

В Spark у меня есть фрейм данных с одним столбцом, имеющим данные в следующем формате: « он = 1she = 2it = 3me = 4 ». Я хочу преобразовать этот столбец в формат " 1-2-3-4 ".

val rawDF = Seq(
  ("he=1she=2it=3me=4"),
  ("he=3she=5it=9me=7")
).toDF("raw")

val newDF = rawDF.withColumn("converted",  regexp_replace($"raw", """[\D]*(\d*)[\D]*(\d*)[\D]*(\d*)[\D]*(\d*)""", """$1-$2-$3-$4"""))

Тогда я получил результат с добавленными '- в конце. Я не знаю, почему это произошло.

+-----------------+----------+
|              raw| converted|
+-----------------+----------+
|he=1she=2it=3me=4|1-2-3-4---|
|he=3she=5it=9me=7|3-5-9-7---|
+-----------------+----------+

Мой ожидаемый результат

+-----------------+----------+
|              raw| converted|
+-----------------+----------+
|he=1she=2it=3me=4|   1-2-3-4|
|he=3she=5it=9me=7|   3-5-9-7|
+-----------------+----------+

Не могли бы вы помочь объяснить, что случилось с моим кодом? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...