Ans*_*sip -3 regex scala apache-spark
我有一个数据框,其中包含文件名、电子邮件和其他详细信息。需要从列文件名之一中获取日期。
例如:文件名:Test_ 04_21_2019 _34600.csv
需要提取日期:04_21_2019
数据框
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")
Run Code Online (Sandbox Code Playgroud)
输出为
date email points
04_21_2018 abc@gmail.com 200
04_15_2020 abc1@gmail.com 300
01_2_2019 abc2@gmail.com 800
Run Code Online (Sandbox Code Playgroud)
我们可以在 Spark 数据帧上使用正则表达式来实现此目的或任何其他方式来实现此目的吗?任何帮助将不胜感激。
您可以使用regexp_extract函数提取日期,如下所示
val resultDF = df1.withColumn("date",
regexp_extract($"file_name", "\\d{1,2}_\\d{1,2}_\\d{4}", 0)
)
Run Code Online (Sandbox Code Playgroud)
输出:
+--------------------+--------------+------+----------+
| 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|
+--------------------+--------------+------+----------+
Run Code Online (Sandbox Code Playgroud)