Давайте создадим это PySpark DataFrame
для вас.Вы должны импортировать to_date
из functions
модуля -
Шаг 0: Импортировать эти 4 функции -
from pyspark.sql.functions import to_date, date_format, concat, lit
Шаг 1:
from pyspark.sql.functions import to_date, date_format, concat, lit
values = [('12/2/2018',),('12/7/2018',)]
df = sqlContext.createDataFrame(values,['scheduled_date_plus_one'])
df = df.withColumn('scheduled_date_plus_one',to_date('scheduled_date_plus_one','MM/dd/yyyy'))
df.printSchema()
root
|-- scheduled_date_plus_one: date (nullable = true)
df.show()
+-----------------------+
|scheduled_date_plus_one|
+-----------------------+
| 2018-12-02|
| 2018-12-07|
+-----------------------+
Как мы видим в .printSchema()
, у нас есть дата в формате date
.Итак, в качестве первого шага мы создали необходимый DataFrame
.
Шаг 2: Преобразование scheduled_date_plus_one
из формата date
в формат string
, чтобы мы моглиприсоединить T02:00:00Z
к нему.date_format
преобразует дату в строку в нужном формате.Мы взяли yyyy-MM-dd
.
df = df.withColumn('scheduled_date_plus_one',date_format('scheduled_date_plus_one',"yyyy-MM-dd"))
df.printSchema()
root
|-- scheduled_date_plus_one: string (nullable = true)
df.show()
+-----------------------+
|scheduled_date_plus_one|
+-----------------------+
| 2018-12-02|
| 2018-12-07|
+-----------------------+
.printSchema()
выше, показывает, что scheduled_date_plus_one
преобразуется в формат string
, и теперь мы можем выполнить часть concatenation
.
Шаг 3: Конкатенация - для этого мы используем функцию concat
.Примечание: вы должны замаскировать T02:00:00Z
в функции lit()
, так как мы не объединяем два столбца.
df = df.withColumn('scheduled_date_plus_one',concat('scheduled_date_plus_one',lit('T02:00:00Z')))
df.show()
+-----------------------+
|scheduled_date_plus_one|
+-----------------------+
| 2018-12-02T02:00:00Z|
| 2018-12-07T02:00:00Z|
+-----------------------+