如何在PySpark/Python中将timeUUID转换为timestamp?
解决TimeUUID字符串转Timestamp的问题
首先,你当前代码的问题大概率出在time_uuid库与标准uuid.UUID对象的字节格式兼容上,试试下面两种更可靠的解决方案:
方案一:用cassandra-driver库处理(推荐,适配Cassandra场景)
如果你的TimeUUID数据来自Cassandra,官方驱动的工具类适配性最好:
from cassandra.util import TimeUUID from uuid import UUID # 替换成你的occurrence列字符串值 occurrence_str = "123e4567-e89b-12d3-a456-426614174000" # 先转标准UUID,再转为TimeUUID对象 time_uuid_obj = TimeUUID(UUID(occurrence_str)) # 获取秒级时间戳(带小数) timestamp = time_uuid_obj.timestamp() # 如需毫秒级时间戳,可做转换 timestamp_ms = int(timestamp * 1000)
方案二:修正time-uuid库的用法
如果坚持使用time-uuid库,直接从字符串解析即可,无需先转uuid.UUID:
import time_uuid occurrence_str = "123e4567-e89b-12d3-a456-426614174000" # 直接用from_string方法解析TimeUUID字符串 ts = time_uuid.TimeUUID.from_string(occurrence_str).get_timestamp() # get_timestamp返回微秒级整数,转秒级需除以1e6 timestamp = ts / 1000000
常见报错排查
- 若报
ValueError: invalid UUID string:检查occurrence字符串是否符合标准UUID格式(8-4-4-4-12的字符结构,包含连字符) - 若报字节参数不匹配:
time-uuid库的TimeUUID构造器对字节顺序的要求和uuid.UUID的bytes属性不一致,直接用字符串解析可避免该问题
内容的提问来源于stack exchange,提问作者Rahul Diggi
相关产品推荐
相关产品推荐

