Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 我想使用SqlContext将月份添加到日期_Scala_Apache Spark - Fatal编程技术网

Scala 我想使用SqlContext将月份添加到日期

Scala 我想使用SqlContext将月份添加到日期,scala,apache-spark,Scala,Apache Spark,“01-FEB-2013”这是我的约会。如何获得2013年3月1日的结果 选择日期添加('2011-01-01',间隔1个月) mySql可以实现这一点。我希望在scala中使用sqlContext可以得到结果吗?您需要使用org.apache.spark.sql.functions.add\u months: def add_months(startDate: Column, numMonths: Int): Column "Returns the date that is numMonths

01-FEB-2013”这是我的约会。如何获得2013年3月1日的结果

选择日期添加('2011-01-01',间隔1个月)


mySql可以实现这一点。我希望在scala中使用sqlContext可以得到结果吗?

您需要使用
org.apache.spark.sql.functions.add\u months

def add_months(startDate: Column, numMonths: Int): Column
"Returns the date that is numMonths after startDate."
以下是其用法示例:

scala> val df = sc.parallelize((0 to 6).map(i => 
       {now.setMonth(i); (i, new java.sql.Date(now.getTime))}).toSeq)
       .toDF("ID", "Dates")
df: org.apache.spark.sql.DataFrame = [ID: int, Dates: date]

scala> df.show
+---+----------+
| ID|     Dates|
+---+----------+
|  0|2016-01-21|
|  1|2016-02-21|
|  2|2016-03-21|
|  3|2016-04-21|
|  4|2016-05-21|
|  5|2016-06-21|
|  6|2016-07-21|
+---+----------+

scala> df.withColumn("New Dates", add_months(df("Dates"),1)).show
+---+----------+----------+
| ID|     Dates| New Dates|
+---+----------+----------+
|  0|2016-01-21|2016-02-21|
|  1|2016-02-21|2016-03-21|
|  2|2016-03-21|2016-04-21|
|  3|2016-04-21|2016-05-21|
|  4|2016-05-21|2016-06-21|
|  5|2016-06-21|2016-07-21|
|  6|2016-07-21|2016-08-21|
+---+----------+----------+

您需要使用
org.apache.spark.sql.functions.add\u months

def add_months(startDate: Column, numMonths: Int): Column
"Returns the date that is numMonths after startDate."
以下是其用法示例:

scala> val df = sc.parallelize((0 to 6).map(i => 
       {now.setMonth(i); (i, new java.sql.Date(now.getTime))}).toSeq)
       .toDF("ID", "Dates")
df: org.apache.spark.sql.DataFrame = [ID: int, Dates: date]

scala> df.show
+---+----------+
| ID|     Dates|
+---+----------+
|  0|2016-01-21|
|  1|2016-02-21|
|  2|2016-03-21|
|  3|2016-04-21|
|  4|2016-05-21|
|  5|2016-06-21|
|  6|2016-07-21|
+---+----------+

scala> df.withColumn("New Dates", add_months(df("Dates"),1)).show
+---+----------+----------+
| ID|     Dates| New Dates|
+---+----------+----------+
|  0|2016-01-21|2016-02-21|
|  1|2016-02-21|2016-03-21|
|  2|2016-03-21|2016-04-21|
|  3|2016-04-21|2016-05-21|
|  4|2016-05-21|2016-06-21|
|  5|2016-06-21|2016-07-21|
|  6|2016-07-21|2016-08-21|
+---+----------+----------+

没问题,如果您认为此答案有用,请确认我的数据是否为2016-02年2月的格式,并且需要更改为2016-02年3月。那么如何解决呢?是日期字符串还是
java.sql.Date
对象?如果您对字符串到日期的转换有疑问,请开始查找。如果你被卡住了,你可以在这里问一个新问题(我可以帮你)。如果此当前答案满足您当前的问题,请接受。好的,埃文,我尝试了一个查询,如“从unix时间(unix时间戳)(添加月份(从unix时间戳('2015-JAN-01','yyyy-MMM-dd'),'yyyy-MM-dd'),1),'yyyy-MM-dd'),'yyyy-MMM-dd');它可以工作。@Ajith如果我的答案满足您的问题,请接受。没问题,如果您发现此答案有用,请确认我的数据格式为2016-02年2月。并且需要更改为2016-02年3月。那么如何解决呢?是日期字符串还是
java.sql.Date
对象?如果您对字符串到日期的转换有疑问,请开始查找。如果你被卡住了,你可以在这里问一个新问题(我可以帮你)。如果此当前答案满足您当前的问题,请接受它。好的,evan我尝试了一个查询,如“从unix时间(unix时间戳)(添加月份(从unix时间戳('2015-JAN-01','yyyy-MMM-dd'),'yyyy-MM-dd'),1),'yyyy-MM-dd'),'yyyy-MMM-dd');”它起作用。@A如果我的答案满足您的问题,请接受它