如何用Spark过滤器替换SQL date(field_date)?

时间:2018-03-14 17:46:35

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

我有以下使用 item = new Item(); item.checked.set(true); item.name.set("a"); binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setItem(item); } public void button_onClick(View v) { item.checked.set(!(item.checked.get())); item.name.set(item.name.get() + "a"); } 的代码:

sql

val yesterdayDate = "2018-03-13" df.createOrReplaceTempView("myTable") val result = spark.sql("select * from myTable where date(field_date) = '" + yesterdayDate) 的值格式为field_date

我希望使用Spark的2018-02-13 23:55:11.382928filter获得相同的结果。

2 个答案:

答案 0 :(得分:1)

sql查询应该适合你

val yesterdayDate = "2018-03-13"
df.createOrReplaceTempView("myTable")
val result = spark.sql(s"select * from myTable where date(field_date) == '${yesterdayDate}'")

result.show(false)

如果您不想使用sql查询,那么您可以使用sql api ,如下所示

val yesterdayDate = "2018-03-13"
import org.apache.spark.sql.functions._
df.select("*").where(date_format(col("field_date"), "yyyy-MM-dd") === yesterdayDate).show(false)

答案 1 :(得分:0)

你想说,在spark sql API中吗?

如果是,你可以做

import spark.implicits._

val yesterdayDate = "2018-03-13"
val df = spark.read // read the source

val result = df.select("*").where($"field_date" === s"$yesterdayDate")

我不得不在评论中编辑。

df.select("*").where(functions.date_format($"field_date".cast(DateType), "yyyy-MM-dd") === s"$yesterdayDate")