环境:spark 2.4.5我有一个要加载的.csv文件,其中的日期格式为“dd/mm/yyyy”,但spark可能无法正确加载此格式的日期。我试过这些功能: 'to_date()', 'to_timestamp()', 'unix_timestamp()' ,但它们都返回具有此格式日期的“null”。如果你能给我一些建议,我将不胜感激。
'to_date()', 'to_timestamp()', 'unix_timestamp()'
9q78igpj1#
dateFormat –设置表示日期格式的字符串。自定义日期格式遵循java.text.simpleDataFormat中的格式。这适用于日期类型。如果未设置,则使用默认值yyyy-mm-dd尝试添加此选项- option("dateFormat", "dd/MM/yyyy") 分析csv文件中的日期列。csv文件数据
dateFormat
option("dateFormat", "dd/MM/yyyy")
scala> "cat /tmp/sample.csv".! "id","dt" 1,01/05/2020 2,20/04/2020
scala> val schema = DataType.fromJson("""{"type":"struct","fields":[{"name":"id","type":"integer","nullable":true,"metadata":{}},{"name":"dt","type":"date","nullable":true,"metadata":{}}]}""").asInstanceOf[StructType] schema: org.apache.spark.sql.types.StructType = StructType(StructField(id,IntegerType,true), StructField(dt,DateType,true)) scala> schema.prettyJson res26: String = { "type" : "struct", "fields" : [ { "name" : "id", "type" : "integer", "nullable" : true, "metadata" : { } }, { "name" : "dt", "type" : "date", "nullable" : true, "metadata" : { } } ] } scala> val df = spark .read .option("header","true") .option("dateFormat", "dd/MM/yyyy") // add this to parse date values from csv file. .schema(schema) .format("csv").load("/tmp/sample.csv") df: org.apache.spark.sql.DataFrame = [id: int, dt: date] scala> df.show(false) +---+----------+ |id |dt | +---+----------+ |1 |2020-05-01| |2 |2020-04-20| +---+----------+ scala>
1条答案
按热度按时间9q78igpj1#
dateFormat
–设置表示日期格式的字符串。自定义日期格式遵循java.text.simpleDataFormat中的格式。这适用于日期类型。如果未设置,则使用默认值yyyy-mm-dd尝试添加此选项-
option("dateFormat", "dd/MM/yyyy")
分析csv文件中的日期列。csv文件数据