#pyspark
#pyspark
Вопрос:
У меня есть фрейм данных pyspark df1
id account created_date
1 A-111 1487384387
2 B-222
3 C-333
4 D-444 1372873827
Я хочу заполнить текущую системную временную метку (эпоху), где когда-либо created_date имеет значение null. Я пробовал ниже
current_date = unix_timestamp(current_timestamp()) * 1000
df1 = df1.na.fill({'created_date': current_date})
но при получении ошибки столбец не может быть повторен. Как я могу этого добиться
Ответ №1:
Используется cast("long")
для преобразования current_timestamp()
в метку времени эпохи. coalesce
Функция может использоваться для замены нулей.
from pyspark.sql.functions import current_timestamp, coalesce
df.withColumn('created_date', coalesce('created_date',
current_timestamp().cast("long"))).show()
--- ------- ------------
| id|account|created_date|
--- ------- ------------
| 1| A-111| 1487384387|
| 2| B-222| 1604798619|
| 3| C-333| 1604798619|
| 4| D-444| 1372873827|
--- ------- ------------