You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark操作Azure Data Lake Gen2时出现日期解析报错如何解决?

解决Spark读取Azure Data Lake Gen2时的日期解析报错问题

该报错属于hadoop-azure依赖包的已知兼容性问题:Azure存储服务返回的文件元数据中HTTP日期头的格式,和当前使用的hadoop-azure版本内置的日期解析器预期格式不匹配。报错出现在元数据拉取的非核心路径,所以不会影响实际的文件读写逻辑,仅会在日志中抛出错误信息。

解决方法

方法1:升级对应依赖版本(推荐)

将Spark配套的hadoop-azure、azure-storage依赖包升级到修复后的版本:

  • 如果你使用Spark 3.x + Hadoop 3.3.x 及以上版本,将hadoop-azure升级到3.3.4及以上即可,该版本官方已经兼容了多种HTTP日期格式的解析逻辑。

方法2:新增Spark配置适配

如果不方便升级依赖,可以直接在SparkConf中新增对应配置,要么禁用日期解析校验,要么手动指定日期格式:

from pyspark import SparkConf
from pyspark.sql import SparkSession


# create spark session
key = "some_key"
appName = "DataExtract"
master = "local[*]"
sparkConf = SparkConf() \
    .setAppName(appName) \
    .setMaster(master) \
    .set("fs.azure.account.key.myaccount.dfs.core.windows.net", key) \
    # 可选配置1:直接禁用非必要的最后修改时间解析,不影响正常读写
    .set("fs.azure.disable.last.modified.time.parse", "true") \
    # 可选配置2:手动指定匹配的日期格式,注意需保证运行环境locale为英文,避免月份缩写解析失败
    # .set("fs.azure.date.format", "EEE, dd MMM yyyy HH:mm:ss zzz")

spark = SparkSession.builder.config(conf=sparkConf).getOrCreate()

data_csv="abfs://test-file-system@myaccount.dfs.core.windows.net/data.csv"
data_out = "abfs://test-file-system@myaccount.dfs.core.windows.net/data_out.csv"

# 注意原代码此处的self.spark_session为错误写法,直接用定义的spark变量即可
df = spark.read.csv(data_csv)

# write csv
df.write.csv(data_out)

方法3:屏蔽非必要错误日志

如果业务已经正常运行,只是不想看到多余的报错日志,可以调整日志配置,将org.apache.hadoop.fs.azurebfs.AzureBlobFileSystemStore包的日志级别调整为WARN以上,即可屏蔽该不影响业务的错误输出。


内容的提问来源于stack exchange,提问作者vll1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:18:04