spark如何将csv表中yyyy/MM/dd类型字段转换成日期类型并存入到新的字段中
时间: 2023-12-23 16:05:53 浏览: 82
java 中Spark中将对象序列化存储到hdfs
在 Spark 中,可以使用 `withColumn` 函数和日期转换函数来将 csv 表中的 yyyy/MM/dd 类型字段转换成日期类型,并将其存入到新的字段中。
假设我们有一个名为 `data.csv` 的 csv 文件,其中包含了以下数据:
```
id,name,date
1,Alice,2021/09/01
2,Bob,2021/09/02
3,Charlie,2021/09/03
```
现在我们想要将 `date` 字段转换成日期类型,并将其存入到名为 `new_date` 的新字段中。可以使用以下代码:
```scala
import org.apache.spark.sql.functions.{to_date, col}
val df = spark.read.format("csv")
.option("header", true)
.load("data.csv")
val newDf = df.withColumn("new_date", to_date(col("date"), "yyyy/MM/dd"))
newDf.show()
```
上述代码首先使用 `read` 函数读取 csv 文件,并将其加载到 DataFrame `df` 中。然后,使用 `withColumn` 函数将 `date` 字段转换成日期类型,并将其存入到名为 `new_date` 的新字段中。在转换函数中,使用 `yyyy/MM/dd` 格式字符串指定输入日期的格式。最后,使用 `show` 函数显示转换后的 DataFrame `newDf`。
输出结果如下:
```
+---+-------+----------+----------+
| id| name| date| new_date|
+---+-------+----------+----------+
| 1| Alice|2021/09/01|2021-09-01|
| 2| Bob|2021/09/02|2021-09-02|
| 3|Charlie|2021/09/03|2021-09-03|
+---+-------+----------+----------+
```
可以看到,转换后的 DataFrame `newDf` 中包含了名为 `new_date` 的新字段,其中存储了转换后的日期数据。
阅读全文