【发布时间】:2019-07-21 19:59:01
【问题描述】:
说明
当我尝试选择转换为 unix_timestamp 的列,然后从数据帧中选择时间戳时,会出现 sparkanalysisexception 错误。 请参阅下面的链接。
但是,当我组合两列,然后将组合转换为 unix_timestamp 和时间戳类型,然后从 df 中选择时,没有错误。
不同的案例
错误: How to extract year from a date string?
没有错误
import org.apache.spark.sql.functions._
import org.apache.spark.sql._
import org.apache.spark.sql.types._
val spark: SparkSession = SparkSession.builder().
appName("myapp").master("local").getOrCreate()
case class Person(id: Int, date: String, time:String)
import spark.implicits._
val mydf: DataFrame = Seq(Person(1,"9/16/13", "11:11:11")).toDF()
//solution.show()
//column modificaton
val datecol: Column = mydf("date")
val timecol: Column = mydf("time")
val newcol: Column = unix_timestamp(concat(datecol,lit(" "),timecol),"MM/dd/yy").cast(TimestampType)
mydf.select(newcol).show()
结果
预期: 错误火花分析,在 mydf 中找不到 unix_timestamp(concat(....))
实际:
+------------------------------------------------------------------+
|CAST(unix_timestamp(concat(date, , time), MM/dd/yy) AS TIMESTAMP)|
+------------------------------------------------------------------+
| 2013-09-16 00:00:...|
【问题讨论】:
标签: scala apache-spark apache-spark-sql