我试图在pyspark中将字符串转换为时间戳格式。
from pyspark.sql.types import DateType
df = spark.createDataFrame([('28/Mar/2021:06:29:54 -0700',)], ['dt'])
df.select(date_format('dt', 'd/M/y:h:m:s Z').alias('date')).collect()
这似乎不起作用,可能是因为date\u format函数没有将其识别为有效格式。我明白了:
[行(日期=无)]
不管怎样,我是否可以让pyspark函数理解格式,做一些类似于python中的datetime模块的事情?
from datetime import datetime
datetime.strptime('28/Mar/2021:06:29:54 -0700', '%d/%b/%Y:%H:%M:%S %z')
当我们传递格式时,它会创建一个有效的datetime对象
datetime.datetime(2021,3,28,6,29,54,tzinfo=datetime.timezone(datetime.timedelta(days=-1,seconds=61200)))
1条答案
按热度按时间ubby3x7f1#
与python的datetime模块不同,在spark中,需要为每个模式指定字符数。另外,使用
to_timestamp
将字符串转换为时间戳类型。date_format
反之亦然,即将时间戳类型转换为字符串。