让我们创建一些虚拟数据:
import datetimefrom pyspark.sql import Rowfrom pyspark.sql.functions import colrow = Row("vacationdate")df = sc.parallelize([ row(datetime.date(2015, 10, 07)), row(datetime.date(1971, 01, 01))]).toDF()如果Spark> = 1.5.0,则可以使用以下
date_format功能:
from pyspark.sql.functions import date_format(df .select(date_format(col("vacationdate"), "dd-MM-YYYY") .alias("date_string")) .show())在Spark <1.5.0中,可以使用Hive UDF完成:
df.registerTempTable("df")sqlContext.sql( "SELECT date_format(vacationdate, 'dd-MM-YYYY') AS date_string FROM df")当然,在Spark> = 1.5.0中仍然可用。
如果不使用
HiveContext,则可以
date_format使用UDF进行模拟:
from pyspark.sql.functions import udf, litmy_date_format = udf(lambda d, fmt: d.strftime(fmt))df.select( my_date_format(col("vacationdate"), lit("%d-%m-%Y")).alias("date_string")).show()请注意,它使用的是C标准格式,而不是Java简单的日期格式



