как добавить значение в поле даты, используя фрейм данных в спарк

Как упоминалось @ noɥʇʎԀʎzɐɹƆ и @phoenix - вы действительно можете использовать его в файлах-заглушках. например

class Foo: bar: Any = ... def __init__(self, name: str=...) -> None: ...

Более подробную информацию и примеры использования этого эллипса можно найти здесь https://www.python.org/dev/peps/pep- 0484 / # заглушки-файлы

-1
задан BigD 16 January 2019 в 23:00
поделиться

2 ответа

Импортировать приведенную ниже инструкцию

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()
  }


}

Спасибо

0
ответ дан Naveen Nelamali 16 January 2019 в 23:00
поделиться

Ваш вопрос до сих пор неясен. Я заимствую вклад @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>
0
ответ дан stack0114106 16 January 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: