根据日期过滤 Spark 数据框

2023-12-05

我有一个数据框

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(使用前将#替换为@)

根据日期过滤 Spark 数据框 的相关文章

随机推荐