Импорт ниже выписки
import org.apache.spark.sql.functions._
Фрагмент кода
val minDate = df.agg(min($"date1")).collect()(0).get(0)
val df2 = df.select("*").filter( to_date(regexp_replace('date1,"/","-")) > date_add(to_date(regexp_replace(lit(minDate)),"/","-"),7))
df2.show()
Для данных
val data = Seq(("2018/01/23",23),("2018/01/24",24),("2018/02/20",25))
Вывод будет
+----------+---+
| date1|day|
+----------+---+
|2018/02/20| 25|
+----------+---+
Если вы ищете другой вывод, пожалуйста, обновите ваш вопрос с ожидаемыми результатами.
Ниже приведена полная программа для справки
package com.nelamalli.spark.dataframe
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
object DataFrameUDF {
def main(args:Array[String]): Unit = {
val spark:SparkSession = SparkSession.builder()
.master("local[3]")
.appName("SparkByExample")
.getOrCreate()
val data = Seq(("2018/01/23",23),("2018/01/24",24),("2018/02/20",25))
import spark.sqlContext.implicits._
val df = data.toDF("date1","day")
val minDate = df.agg(min($"date1")).collect()(0).get(0)
val df2 = df.select("*").filter( to_date(regexp_replace('date1,"/","-")) > date_add(to_date(regexp_replace(lit(minDate)),"/","-"),7))
df2.show()
}
}
Спасибо