在spark scala Velocity中添加天数到日期字段

时间:2017-05-30 13:50:52

标签: apache-spark velocity

任何人都可以告诉我们如何将天数添加到现有天数。例如:我想添加30天的开始日期,我想打印它。 我正在尝试这个

math

但它不起作用。任何人都可以告诉有任何API或如何获得? 谢谢

1 个答案:

答案 0 :(得分:1)

如果您想在DateType字段中添加天数,可以使用函数org.apache.spark.sql.functions._date_add(column, no of days)

如果您想在现有的DateType字段

中添加一个月
org.apache.spark.sql.functions._add_months()

这是一个让你清楚的简单例子。

  val spark =
    SparkSession.builder().master("local").appName("test").getOrCreate()

  import spark.implicits._

  val data = spark.sparkContext.parallelize(
    Seq((0, "2016-01-1"),
        (1, "2016-02-2"),
        (2, "2016-03-22"),
        (3, "2016-04-25"),
        (4, "2016-05-21"),
        (5, "2016-06-1"),
        (6, "2016-03-21"))
  ).toDF("id", "date")

  //Cast to date type
  val data1 = data.withColumn("date", $"date".cast(DateType))

  //add 1 month in each row 
  data.withColumn("date", add_months($"date", 1)).show

  //add 30 days in each row
  data.withColumn("date", date_add($"date", 30)).show