Glue作业无法识别Delta Lake Python库问题求助
解决Glue作业中
DeltaTable未定义的NameError问题 以下是针对该问题的具体排查和解决步骤:
必须导入
DeltaTable类
代码中使用DeltaTable但未导入是最常见的原因,在代码开头添加导入语句:from delta.tables import DeltaTable修正
--datalake-formats参数格式
你当前的参数写法带有空格(--datalake-formats = delta),可能导致参数不生效,需改为无空格的格式:--datalake-formats delta或:
--datalake-formats=delta确认Spark配置的正确添加方式
建议直接在Glue作业控制台的Spark configuration字段中添加Delta相关配置,而非仅在代码中设置:spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog若坚持在代码中配置,需确保在SparkSession初始化前完成设置,例如:
from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() sc._conf.set("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") sc._conf.set("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") glueContext = GlueContext(sc) spark = glueContext.spark_session检查Glue版本兼容性
- Glue 3.0及以上版本:默认支持Delta Lake,只需配置
--datalake-formats delta即可,无需手动上传依赖包。 - Glue 2.0版本:需自行下载对应Spark 2.4版本的Delta Lake包,上传至S3,然后在作业的Python library path中添加该包的S3路径。
- Glue 3.0及以上版本:默认支持Delta Lake,只需配置
验证SparkSession实例的正确性
确保代码中使用的是GlueContext提供的SparkSession,而非自定义的普通SparkSession,示例:deltaTable = DeltaTable.forPath(glueContext.spark_session, self.dest_path_sdad)
内容的提问来源于stack exchange,提问作者Jatin
相关产品推荐
相关产品推荐

