Как извлечь дату из столбца String с помощью регулярных выражений в Spark - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть датафрейм, который состоит из имени файла, адреса электронной почты и других деталей. Нужно получить даты из него по одному из столбцов имени файла.

Пример: Имя файла : Test_ 04_21_2019 _34600.csv

Нужно извлечь дату : 04_21_2019

Dataframe

val df1 = Seq(
  ("Test_04_21_2018_1200.csv", "abc@gmail.com",200),
  ("home/server2_04_15_2020_34610.csv", "abc1@gmail.com", 300),
  ("/server1/Test3_01_2_2019_54680.csv", "abc2@gmail.com",800))
.toDF("file_name", "email", "points")

Вывод будет

date         email           points
04_21_2018   abc@gmail.com   200
04_15_2020   abc1@gmail.com  300
01_2_2019    abc2@gmail.com  800

Можем ли мы использовать регулярные выражения в кадре данных spark для достижения того или иного способа достижения этого. Любая помощь будет оценена.

1 Ответ

2 голосов
/ 23 апреля 2019

Вы можете использовать функцию regexp_extract для извлечения даты, как показано ниже

val resultDF = df1.withColumn("date", 
  regexp_extract($"file_name", "\\d{1,2}_\\d{1,2}_\\d{4}", 0)
)

Вывод:

+--------------------+--------------+------+----------+
|           file_name|         email|points|      date|
+--------------------+--------------+------+----------+
|Test_04_21_2018_1...| abc@gmail.com|   200|04_21_2018|
|home/server2_04_1...|abc1@gmail.com|   300|04_15_2020|
|/server1/Test3_01...|abc2@gmail.com|   800| 01_2_2019|
+--------------------+--------------+------+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...