我有一个数据框
date, string, string
我想选择某个时间段之前的日期。我尝试了以下方法但没有成功
data.filter(data("date") < new java.sql.Date(format.parse("2015-03-14").getTime))
我收到一条错误消息,内容如下
org.apache.spark.sql.AnalysisException: resolved attribute(s) date#75 missing from date#72,uid#73,iid#74 in operator !Filter (date#75 < 16508);
据我猜测查询是不正确的。谁能告诉我查询应该采用什么格式?
我检查了数据框中的所有条目是否都有值 - 它们确实如此。
以下解决方案适用,因为火花1.5 :
对于低于:
// filter data where the date is lesser than 2015-03-14
data.filter(data("date").lt(lit("2015-03-14")))
对于大于:
// filter data where the date is greater than 2015-03-14
data.filter(data("date").gt(lit("2015-03-14")))
为了平等,您可以使用equalTo
or ===
:
data.filter(data("date") === lit("2015-03-14"))
If your DataFrame
日期列的类型StringType
,您可以使用to_date
功能 :
// filter data where the date is greater than 2015-03-14
data.filter(to_date(data("date")).gt(lit("2015-03-14")))
您还可以使用以下命令根据年份进行过滤year
功能 :
// filter data where year is greater or equal to 2016
data.filter(year($"date").geq(lit(2016)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)