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

本地运行AWS Glue脚本时导入delta.tables报module not found错误

解决本地AWS Glue脚本导入delta.tables时报错的问题

问题根本原因

你遇到的delta.tables module not found错误主要来自两个点:

  • 本地环境未安装Delta Lake的Python客户端包,仅配置Spark JAR不足以让Python识别delta.tables模块
  • 导入delta.tables的时机早于SparkSession的Delta配置初始化,导致Python无法关联到Delta的依赖

具体修复步骤

1. 安装匹配版本的Delta Lake Python包

你的Delta JAR版本是1.0.0,需安装对应版本的Python包:

pip install delta-spark==1.0.0

2. 调整代码导入时机与配置逻辑

将delta.tables的导入延迟到SparkSession初始化完成后,同时移除代码中硬编码的JAR路径配置(改用命令行参数传入更可靠):

from pyspark.sql.session import SparkSession

class DataLakeClient:
    def __init__(self, s3_alias, prefix):
        self.spark = (
            SparkSession.builder
            .config(
                "spark.sql.extensions",
                "io.delta.sql.DeltaSparkSessionExtension",
            )
            .config(
                "spark.sql.catalog.spark_catalog",
                "org.apache.spark.sql.delta.catalog.DeltaCatalog",
            )
            .getOrCreate()
        )
        # 延迟导入,确保Spark Delta配置生效后再加载模块
        from delta.tables import *
        self.path = f"{s3_alias}/{prefix}/"

    def read_dl(self, table):
        return DeltaTable.forPath(self.spark, f"{self.path}/{table}").toDF()

3. 修改gluesparksubmit命令

用--jars参数明确指定Delta JAR路径,让Glue Spark环境正确加载依赖:

bash gluesparksubmit --jars /home/my_user_name/aws-glue-libs/code/libs/delta-core_2.12-1.0.0.jar /home/my_user_name/aws-glue-libs/code/script.py

额外验证点

  • 确认gluesparksubmit使用的Python环境和你安装delta-spark的环境一致(可通过gluesparksubmit --version查看关联版本)
  • 检查Delta JAR文件路径是否正确、文件是否有可读权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:48:20