2017-06-21 5 views
0

ich einen Spark-Datenrahmen haben, wie unten dargestellt:Convert Datum des Monats in Spark Ende

#Create DataFrame  
df <- data.frame(name = c("Thomas", "William", "Bill", "John"), 
     dates = c('2017-01-05', '2017-02-23', '2017-03-16', '2017-04-08')) 
df <- createDataFrame(df) 

#Make sure df$dates column is in 'date' format  
df <- withColumn(df, 'dates', cast(df$dates, 'date')) 

name | dates 
-------------------- 
Thomas |2017-01-05 
William |2017-02-23 
Bill |2017-03-16 
John |2017-04-08 

Ich möchte dates bis zum Ende des Monats das Datum ändern, damit sie aussehen wie unten dargestellt. Wie mache ich das? Entweder SparkR oder PySpark-Code ist in Ordnung.

name | dates 
-------------------- 
Thomas |2017-01-31 
William |2017-02-28 
Bill |2017-03-31 
John |2017-04-30 

Antwort

3

Sie können die folgenden (PySpark) verwenden:

from pyspark.sql.functions import last_day 

df.select('name', last_day(df.dates).alias('dates')).show() 

Um zu klären, last_day(date) gibt den letzten Tag des Monats von dem Zeitpunkt gehört.

Ich bin ziemlich sicher, es in sparkR eine ähnliche Funktion https://spark.apache.org/docs/1.6.2/api/R/last_day.html

0

Der Vollständigkeit halber ist hier der SparkR Code:

df <- withColumn(df, 'dates', last_day(df$dates)) 
Verwandte Themen