假设我做的事情如下:
val df = sqlContext.load("com.databricks.spark.csv", Map("path" -> "cars.csv", "header" -> "true"))
df.printSchema()
root
|-- year: string (nullable = true)
|-- make: string (nullable = true)
|-- model: string (nullable = true)
|-- comment: string (nullable = true)
|-- blank: string (nullable = true)
df.show()
year make model comment blank
2012 Tesla S No comment
1997 Ford E350 Go get one now th...
Run Code Online (Sandbox Code Playgroud)
但我真的想要yearas Int(并且可能会转换其他一些列).
我能想到的最好的是
df.withColumn("year2", 'year.cast("Int")).select('year2 as 'year, 'make, 'model, 'comment, 'blank)
org.apache.spark.sql.DataFrame = [year: int, …Run Code Online (Sandbox Code Playgroud) 我有一个String数据类型的火花数据框中的列(日期为yyyy-MM-dd模式)我想以MM/dd/yyyy模式显示列值
我的数据是
val df = sc.parallelize(Array(
("steak", "1990-01-01", "2000-01-01", 150),
("steak", "2000-01-02", "2001-01-13", 180),
("fish", "1990-01-01", "2001-01-01", 100)
)).toDF("name", "startDate", "endDate", "price")
df.show()
+-----+----------+----------+-----+
| name| startDate| endDate|price|
+-----+----------+----------+-----+
|steak|1990-01-01|2000-01-01| 150|
|steak|2000-01-02|2001-01-13| 180|
| fish|1990-01-01|2001-01-01| 100|
+-----+----------+----------+-----+
root
|-- name: string (nullable = true)
|-- startDate: string (nullable = true)
|-- endDate: string (nullable = true)
|-- price: integer (nullable = false)
Run Code Online (Sandbox Code Playgroud)
我想以MM/dd/yyyy模式显示endDate.我能做的就是将列从String转换为DateType
val df2 = df.select($"endDate".cast(DateType).alias("endDate"))
df2.show()
+----------+
| endDate|
+----------+
|2000-01-01|
|2001-01-13|
|2001-01-01|
+----------+
df2.printSchema()
root
|-- endDate: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将字符串类型从字符串更改为日期.我咨询了以下答案:
当我尝试从链接1应用答案时,我得到了null结果,所以我提到了链接2的答案,但我不明白这一部分:
output_format = ... # Some SimpleDateFormat string
Run Code Online (Sandbox Code Playgroud)
我想直接从评论中提问,但唉,我的声誉还不够.
我应该如何使用spark 2.0数据集API正确执行日期时间解析?
有很多样本用于数据帧/ RDD
一个类似的
case class MyClass(myField:java.sql.Datetime)
val mynewDf = spark.read
.option("header", "true")
.option("inferSchema", "true")
.option("charset", "UTF-8")
.option("delimiter", ",")
.csv("pathToFile.csv")
.as[MyClass]
Run Code Online (Sandbox Code Playgroud)
不足以施放类型.我应该如何使用数据集API正确执行此操作?
加载数据有效.例如.一个print schema节目myDateFiled: timestamp (nullable = true)
但是一个myDf.show会产生一个
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:143)
Run Code Online (Sandbox Code Playgroud)
这让我相信我对日期的解析是不正确的.怎么会这样?