Apache spark pyspark中两种时间戳类型的差异

Apache spark pyspark中两种时间戳类型的差异,apache-spark,pyspark,Apache Spark,Pyspark,使用pyspark,我有一个具有两列TimestampType的数据帧: df.schema …StructField(会话开始,时间戳类型,true),StructField(会话结束,时间戳类型,true)。。。 但我不知道如何计算差异: df2=df.withColumn(“会话长度”,col(“会话结束”)-col(“会话开始”)) 给我 AnalysisException:u“无法解析”('session\u end`-'session\u start`),因为数据类型不匹配:'(

使用pyspark,我有一个具有两列
TimestampType
的数据帧:

df.schema
…StructField(会话开始,时间戳类型,true),StructField(会话结束,时间戳类型,true)。。。
但我不知道如何计算差异:

df2=df.withColumn(“会话长度”,col(“会话结束”)-col(“会话开始”))
给我

AnalysisException:u“无法解析”('session\u end`-'session\u start`),因为数据类型不匹配:'('session\u end`-'session\u start`)需要(数值或日历间隔)类型,而不是时间戳。。。
我还没有找到一个可行的替代方案。(有一个
datediff
函数,但它以天为单位返回结果,我需要以秒为单位的差值。)

我该怎么写

编辑:此问题的原始版本由于在我的笔记本中将
col
重新用作变量而导致不同的错误。在重新执行
import
以获取函数后,我现在获得上面的
AnalysisException
您应该用于转换列,然后获取差异:

从pyspark.sql.functions导入unix\u时间戳
df2=df.withColumn(
“会话长度”,
unix_时间戳(“会话_结束”)-unix_时间戳(“会话_开始”)
)

Thatnks——这很有效。我忽略了这一点,因为它说它需要字符串值。
TimestampType
真的是一种字符串类型吗,或者它如何知道将其转换为字符串?TBH,我不清楚细节,但可能它试图先进行转换。很难找到pyspark funct的好文档我怎样才能在普通的Spark SQL查询中(因为我在复杂的case语句中使用它)而不是使用函数实现同样的效果呢?我还希望减去的值作为间隔,而不是默认情况下的长值(以秒为单位)。如果你发布一个带有。