Как упоминалось @ noɥʇʎԀʎzɐɹƆ и @phoenix - вы действительно можете использовать его в файлах-заглушках. например
class Foo:
bar: Any = ...
def __init__(self, name: str=...) -> None: ...
Более подробную информацию и примеры использования этого эллипса можно найти здесь https://www.python.org/dev/peps/pep- 0484 / # заглушки-файлы
Импортировать приведенную ниже инструкцию
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()
}
}
Спасибо
Ваш вопрос до сих пор неясен. Я заимствую вклад @Naveen, и вы можете получить те же результаты без UDF. Проверьте это
scala> val df = Seq(("2018/01/23",23),("2018/01/24",24),("2018/02/20",25)).toDF("dt","day").withColumn("dt",to_date(regexp_replace('dt,"/","-")))
df: org.apache.spark.sql.DataFrame = [dt: date, day: int]
scala> df.show(false)
+----------+---+
|dt |day|
+----------+---+
|2018-01-23|23 |
|2018-01-24|24 |
|2018-02-20|25 |
+----------+---+
scala> val mindt = df.groupBy().agg(min('dt)).as[(java.sql.Date)].first
mindt: java.sql.Date = 2018-01-23
scala> df.filter('dt > date_add(lit(mindt),7)).show(false)
+----------+---+
|dt |day|
+----------+---+
|2018-02-20|25 |
+----------+---+
scala>