AWS Glue作业(ap-south-1区)为何用UTC而非本地时区?如何解决?
AWS Glue作业时区问题:UTC而非ap-south-1本地时区的原因与解决办法
为什么Glue用UTC时区?
- AWS Glue的Worker节点运行环境默认采用UTC时区,这是云服务行业的通用标准,和作业部署的区域无关。统一使用UTC可以避免跨区域部署时的时区混乱,保证作业日志、运行时间等数据的一致性。
- Python的
datetime.now()在未指定时区参数时,会读取运行环境的本地时区,而Glue Worker的本地时区就是UTC,所以返回的是UTC时间。
解决办法
方法1:直接获取ap-south-1时区的时间
如果使用Glue 3.0及以上(对应Python 3.9+),可以用Python内置的zoneinfo模块:
from datetime import datetime from zoneinfo import ZoneInfo # 获取当前印度标准时间(ap-south-1区域时区) created_on = datetime.now(tz=ZoneInfo("Asia/Kolkata"))
如果是Glue 2.0及以下版本,需要用pytz库(Glue环境已预装):
from datetime import datetime import pytz ist_timezone = pytz.timezone("Asia/Kolkata") created_on = datetime.now(tz=ist_timezone)
方法2:修改Glue作业的时区环境变量
通过配置作业参数,把Worker节点的本地时区设置为ap-south-1对应的时区:
- 打开Glue作业的编辑页面
- 找到「作业参数」区域
- 添加参数:
- 键:
--conf - 值:
spark.executorEnv.TZ=Asia/Kolkata spark.driverEnv.TZ=Asia/Kolkata
设置完成后,datetime.now()会直接返回印度标准时间(UTC+5:30)。
- 键:
内容的提问来源于stack exchange,提问作者Dhivakhar Venkatachalam
相关产品推荐
相关产品推荐

