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