gpt4 book ai didi

sql - (Scala) 在 Apache Spark 中将字符串转换为日期

转载 作者:行者123 更新时间:2023-12-01 11:22:12 25 4
gpt4 key购买 nike

我想用 Spark 读取 .csv 文件并将列与拟合类型相关联。

    val conf = new SparkConf()
.setMaster("local[8]")
.setAppName("Name")

val sc = new SparkContext(conf)

val sqlContext = new SQLContext(sc)

val customSchema = StructType(Array(
StructField("date", DateType, true),
StructField("time",StringType, true),
StructField("am", DoubleType, true),
StructField("hum", DoubleType, true),
StructField("temp", DoubleType, true)
))

val df = sqlContext.read
.format("org.apache.spark.sql.execution.datasources.csv.CSVFileFormat")
.option("header","true")
.option("delimiter",";")
.schema(customSchema)
.load("data.csv")

我正在阅读的一行 .csv 看起来像这样
+----------+--------+-----+-----+-----+
| date| time| am| hum| temp|
+----------+--------+-----+-----+-----+
|04.10.2016|12:51:20|1.121|0.149|0.462|
+----------+--------+-----+-----+-----+

如果我将日期的类型设置为字符串,Spark 将读取 .csv 并正确关联类型。如果我像上面显示的代码一样保留 customSchema,由于日期格式错误,Spark 将抛出异常 (DateType will expect YYYY-MM-DD while mine is DD.MM.YYYY).
有没有办法将日期字符串重新格式化为 YYYY-MM-DD 并在之后应用架构?或者我也可以通过添加参数来改变 Spark 给出的 DateType ?

提前致谢

最佳答案

使用 dateFormat选项:

val df = sqlContext.read
.format("org.apache.spark.sql.execution.datasources.csv.CSVFileFormat")
.option("header","true")
.option("delimiter",";")
.option("dateFormat", "dd.MM.yyyy")
.schema(customSchema)
.load("data.csv")

关于sql - (Scala) 在 Apache Spark 中将字符串转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40844171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com