ValueError: pyspark данных времени '00 .00.00 ' - PullRequest
1 голос
/ 16 апреля 2020

Я получаю значения даты из файла данных pyspark в формате "mm.dd.yy". Я хотел бы преобразовать его в формат "mm.dd.yyyy".

Я пытался написать UDF, но функция даты и времени выдает ошибку.

from pyspark.sql.types import StringType
from pyspark.sql.functions import udf
import datetime

def change_date(date_string):
  dateConv = datetime.datetime.strptime(date_string,'%d.%m.%y')
  dt_str = datetime.datetime.strftime(dateConv,'%d.%m.%Y')

  return dt_str

date_udf = udf(lambda date: change_date(date),  StringType())
display(filterEmplyValues.withColumn("date", date_udf(col("date"))))

Я получаю сообщение об ошибке: `SparkException: задание прервано из-за сбоя этапа: сбой задачи 23 на этапе 302.0 4 раза, последний сбой: сбой задачи 23.3 на этапе 302.0 (TID 18078, 10.139.64.15, исполнитель 71): org. apache .spark.api. python .PythonException: Traceback (последний вызов был последним): файл "/databricks/spark/python/pyspark/worker.py", строка 480 , в основном процессе ()

ValueError: данные времени '00 .00.00 'не соответствуют формату'% d.% m.% y '`

Спасибо за помощь.

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете сделать это без UDF, используя встроенные функции искры to_date и date_format.

df.show()

+--------+
|    date|
+--------+
|08.27.18|
+--------+

from pyspark.sql import functions as F
df.withColumn("date", F.date_format(F.to_date("date", "MM.dd.yy"),"MM.dd.yyyy")).show()

+----------+
|      date|
+----------+
|08.27.2018|
+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...