#python #apache-spark #pyspark #apache-spark-sql
#python #apache-spark #pyspark #apache-spark-sql
Вопрос:
Я пытаюсь изменить строку на time_stamp в pyspark (версия Spark = 2.3.0) с помощью приведенного ниже набора данных и api
Я пытался использовать разрешение, отличное от stack overflow, но ничто не могло помочь изменить значение time_stamp
df:
|Customer|Transaction_Timestamp|Transaction_Base_Point_Value|
-------- --------------------- ----------------------------
|Cust1 |10/25/2017 1:47 |2000 |
Попытка 1
df2 = df.select('Customer', 'Transaction_Timestamp','Transaction_Base_Point_Value', unix_timestamp('Transaction_Timestamp', "dd/MM/yy HH:mm") .cast(TimestampType()).alias("Timestamp")).show(1, False)
Попытка 2
df.withColumn('Time', to_timestamp("Transaction_Timestamp", "yyyy_MM_dd hh_mm_ss").cast("Timestamp"))
Попытка 3
change_type= df.withColumn('Timestamp', col='Transaction_Timestamp').cast('timestamp')
Однако схема выдает следующий вывод
|-- Timestamp: timestamp (nullable = true)
Мне нужно получить вывод следующим образом, чтобы я мог выполнить другую операцию с временной меткой
|Customer|Transaction_Timestamp|Transaction_Base_Point_Value|Timestamp|
-------- --------------------- ---------------------------- ---------
| Cust1| 10/25/2017 1:47| 2000| 10/25/2017 1:47|
Ответ №1:
используйте to_timestamp
из pyspark.sql.functions
.withColumn('Timestamp', to_timestamp('Transaction_Timestamp', 'MM/dd/yyyy hh:mm'))
также было бы неплохо иметь дополненное значение часа, не 1:47
но 01:47
Комментарии:
1. Привет, Кендока, спасибо за твой реплей. Однако вышеупомянутое решение у меня не сработало. Временная метка по-прежнему выдает нулевые значения, даже если схема была изменена.
2. вы можете попробовать
col("Transaction_Timestamp").cast("Timestamp")
Интересно, изменит ли что-нибудь строка времени с заполнением нулем…