Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在PYSPARK中将字符串转换为时间?_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 如何在PYSPARK中将字符串转换为时间?

Apache spark 如何在PYSPARK中将字符串转换为时间?,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我正在尝试将字符串转换为时间,但得到空值 例如, val Start=='080000' 使用以下步骤 1)unix_timestamp(col('Start'),'HH:mm:ss'),\ 2)to_timestamp(lit('Start'),'HH:mm:ss'),\ 3)to_timestamp(col('Start'),'HH:mm:ss'),\ 4)from_unixtime(unix_timestamp(col('Start'),'HH:mm:ss')) 预期输出: 08:00:

我正在尝试将字符串转换为时间,但得到空值

例如, val Start=='080000'

使用以下步骤

1)unix_timestamp(col('Start'),'HH:mm:ss'),\
2)to_timestamp(lit('Start'),'HH:mm:ss'),\
3)to_timestamp(col('Start'),'HH:mm:ss'),\
4)from_unixtime(unix_timestamp(col('Start'),'HH:mm:ss'))
预期输出:

08:00:00(HH:MM:SS)


有人能推荐一下Spark确实有时间类型的方法吗。最新版本v3.1.1只有
DateType
TimestampType
,因此无法简单地回答将字符串转换为时间的请求

但是,可以将
080000
(StringType)转换为
2000-01-01 08:00:00
(TimestampType)–或者转换为日期无关紧要的任何日期–您可以执行任何类型的日期比较

(df
.withColumn('from_timestamp',F.regexp_replace(F.col('from'),'(\d{2})(\d{2}),'2000-01-01$1:$2:$3'))
.withColumn('to_timestamp',F.regexp_replace(F.col('to'),'(\d{2})(\d{2}),'2000-01-01$1:$2:$3'))
.withColumn('diff',F.to_timestamp(F.col('to_timestamp'))-F.to_timestamp(F.col('from_timestamp'))
.show()
)
# +------+------+-------------------+-------------------+----------+
#|从|到|从|时间戳|到|时间戳|差异|
# +------+------+-------------------+-------------------+----------+
#| 080000 | 083000 | 2000-01-01 08:00:00 | 2000-01-01 08:30:00 | 30分钟|
# +------+------+-------------------+-------------------+----------+

但是,在执行sql到Pyspark的代码迁移时,我需要计算开始时间和结束时间。如何处理这些场景?很简单,需要在Pyspark中将字符串转换为时间