筛选数据框Spark Scala的日期大于当前时间

时间:2019-10-16 19:53:59

标签: scala dataframe apache-spark hadoop apache-spark-sql

我在spark 1.6中有一个数据框,我想选择大于当前时间的所有行。我正在使用“ yyyy-MM-dd'T'HH:mm:ss.SSS”格式的“ time_occurred”列进行过滤。我想知道实现此目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

最好的方法是使用 def new_news_form_view(request): if request.method == "POST": form_data = request.POST or None form = NewNewsForm(form_data) if form.is_valid(): news = form.save(commit=False) news.author = request.user news.save() return redirect('/news') else: form = NewNewsForm() context = { 'form': form } return render(request, "news/news_form.html", context) 函数替换timestamp,将字段强制转换为 Regexp_replace 类型。

然后使用 'T' 函数,我们可以过滤出数据框中的数据。

current_timestamp

Example:

Spark-scala-1.6:

import sqlContext.implicits._ import org.apache.spark.sql.functions._ import org.apache.spark.sql.types._ //sample data val df=sc.parallelize(Seq(("2019-10-17'T'18:30:45.123"),("2019-10-15'T'18:30:45.123"))).toDF("ts") df.filter(regexp_replace('ts,"'T'"," ").cast("timestamp") > current_timestamp).show(false)

Result:

如果您需要替换+-------------------------+ |ts | +-------------------------+ |2019-10-17'T'18:30:45.123| +-------------------------+ 以获得ts字段的时间戳类型,请使用此方法。

'T'

df.withColumn("ts",regexp_replace('ts,"'T'"," ").cast("timestamp")) .filter('ts > current_timestamp).show(false)

Result:

结果+-----------------------+ |ts | +-----------------------+ |2019-10-17 18:30:45.123| +-----------------------+ 字段将为ts类型。