gpt4 book ai didi

apache-spark - 根据日期过滤 Spark 数据框

转载 作者:行者123 更新时间:2023-12-03 07:25:53 25 4
gpt4 key购买 nike

我有一个数据框

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);

据我猜测,查询是不正确的。谁能告诉我查询应该采用什么格式?

我检查了数据框中的所有输入都具有值 - 它们确实具有值。

最佳答案

以下解决方案自 spark 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=== :

data.filter(data("date") === lit("2015-03-14"))

如果您的 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)))

关于apache-spark - 根据日期过滤 Spark 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com