Python Pyspark-将rfc 2822列转换为tymestamp列

Python Pyspark-将rfc 2822列转换为tymestamp列,python,python-3.x,apache-spark,pyspark,Python,Python 3.x,Apache Spark,Pyspark,我试图将rfc2822 datetime列转换为timestamp列。如果我在数据帧外处理变量,它就工作了。但在数据帧中,我收到一条错误消息 我的进口: from pyspark.sql.types import * from pyspark.sql.column import * from pyspark.sql.functions import * from email.utils import parsedate_to_datetime 在数据帧之外工作这是代码: datestr = "

我试图将rfc2822 datetime列转换为timestamp列。如果我在数据帧外处理变量,它就工作了。但在数据帧中,我收到一条错误消息

我的进口:

from pyspark.sql.types import *
from pyspark.sql.column import *
from pyspark.sql.functions import *
from email.utils import parsedate_to_datetime
在数据帧之外工作这是代码:

datestr = "Thu Sep 12 2019 15:58:30 GMT-0500 (hora estándar de Colombia)"
print(parsedate_to_datetime(datestr))
输出:

2019-09-12 15:58:30

但是,如果我使用这个数据帧:

df =
spark.createDataFrame(["Thu Sep 12 2019 15:58:30 GMT-0500 (hora estándar de Colombia)"], "string",).toDF("Date")
并尝试使用以下代码创建另一列:

df2 = df.withColumn("timestamp", parsedate_to_datetime(col("Date")))
我收到错误消息:

无法将列转换为布尔值:请将“&”用于“和”,将“|”用于 '或',“ValueError:无法将列转换为布尔值:请使用'&' 在构建数据框布尔值时,对于“and”,对于“or”,对于“and”,对于“or”,对于“not”,对于“~” 表情


parsedate\u注册为一个UDF,以允许它与Spark的数据类型进行互操作:

>>> from pyspark.sql.types import *
>>> from pyspark.sql.column import *
>>> from pyspark.sql.functions import *
>>> from email.utils import parsedate_to_datetime
>>> df = spark.createDataFrame(["Thu Sep 12 2019 15:58:30 GMT-0500 (hora estándar de Colombia)"], "string",).toDF("Date")
>>> parsedate_to_datetime_udf = udf(parsedate_to_datetime, TimestampType())
>>> df2 = df.withColumn("timestamp", parsedate_to_datetime_udf(col("Date")))
>>> df2.show()
+--------------------+-------------------+
|                Date|          timestamp|
+--------------------+-------------------+
|Thu Sep 12 2019 1...|2019-09-12 15:58:30|
+--------------------+-------------------+

不适合我。控制台引发了以下异常:
在deco中引发IllegalArgumentException(s.split(“:”,1)[1],stackTrace)>pyspark.sql.utils.IllegalArgumentException:“不受支持的类文件主版本>>55”那么您有一个更根本的问题-您使用的JRE版本与Spark不兼容。