我在數據集:有一個datetime字符串“2023061218154258”,我想把它轉換成datetime,使用以下代碼。但是我希望的格式工作,不工作,即:yyyyMMddHHmmssSS。這段代碼將重現這個問題:
從pyspark.sql。功能導入* spark.conf.set (“spark.sql.legacy.timeParserPolicy”、“糾正”)#如果配置設置為糾正然後轉換將返回null,而不是拋出異常。df =火花。createDataFrame (data =[(“1”、“2023061218154258”)(“2”,“20230612181542.58”)],模式= [“id”、“input_timestamp”]) df.printSchema() #時間戳字符串DateType 1。df。withColumn(“時間戳”,to_timestamp (“input_timestamp”,格式= ' yyyyMMddHHmmssSS ')),告訴df(截斷= False)。withColumn(“時間戳”,to_timestamp (“input_timestamp”,格式= ' yyyyMMddHHmmss.SS ')),告訴(截斷= False)
輸出:
+ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | | id input_timestamp |時間戳| + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | 1 | 2023061218154258 |零| | 2 | 20230612181542.58 |零| + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | + | id input_timestamp |時間戳| + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -零| + | 1 | 2023061218154258 | | 2 | 20230612181542.58 | 2023-06-12 18:15:42.58 | + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
我試著用格式yyyyMMddHHmmssSS to_timestamp預計,它將字符串2023061218154258轉換成時間戳2023-06-12 18:15:42.58
當我改變
spark.conf.set (“spark.sql.legacy.timeParserPolicy”、“糾正”)
成
spark.conf.set (“spark.sql.legacy.timeParserPolicy”、“遺產”)問題是解決了,但我不想使用遺留模式(因為它給其他問題)。