【发布时间】:2020-01-25 07:14:32
【问题描述】:
我收到错误:
org.apache.spark.sql.analysisexception: cannot resolve 'year'
我的输入数据:
1,2012-07-21,2014-04-09
我的代码:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
import org.apache.spark.sql.SaveMode
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
case class c (id:Int,start:String,end:String)
val c1 = sc.textFile("date.txt")
val c2 = c1.map(_.split(",")).map(r=>(c(r(0).toInt,r(1).toString,r(2).toString)))
val c3 = c2.toDF();
c3.registerTempTable("c4")
val r = sqlContext.sql("select id,datediff(year,to_date(end), to_date(start)) AS date from c4")
如何解决上述错误?
我已经尝试了以下代码,但我在几天内就得到了输出,而且我需要几年后才能得到它
val r = sqlContext.sql("select id,datediff(to_date(end), to_date(start)) AS date from c4")
如果我可以使用 to_date 之类的任何函数来获取年份差异,请告诉我。
【问题讨论】:
-
除以 365?还有一个日期部分允许您指定年份。请参阅docs.microsoft.com/en-us/sql/t-sql/functions/…Google 是您的朋友。
-
感谢您的意见。我尝试使用 UDF 的 @Missy 除以 365
-
docs.microsoft.com 的链接指的是 T-SQL(即 SQL Server 中使用的过程语言),而不是 Spark。
标签: scala apache-spark apache-spark-sql