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

AWS Glue Scala Spark作业配置Spark参数无效,正确方法是什么?

在AWS Glue Scala Spark作业中正确设置Spark配置的方法

你的问题出在手动创建SparkConf并初始化SparkContext的方式不符合Glue的运行机制——Glue会自动管理Spark上下文的初始化,手动创建的配置会被Glue的默认配置覆盖,导致设置不生效。以下是两种可行的解决方案:

方法一:通过Glue作业参数设置(推荐,无需修改代码)

直接在Glue作业的配置界面添加作业参数:

  • 键:--conf
  • 值:spark.sql.legacy.parquet.int96RebaseModeInRead=LEGACY(或CORRECTED,根据你的数据来源选择)

这种方式会让Glue在启动Spark上下文时自动加载该配置,完全无需改动代码。

方法二:在代码中基于Glue的上下文修改配置

如果必须在代码中设置,不要手动新建空的SparkConf,而是基于Glue的现有上下文配置修改:

方式A:获取GlueContext的SparkSession后设置

val glueContext: GlueContext = new GlueContext(new SparkContext())
val spark = glueContext.getSparkSession
// 设置所需配置
spark.conf.set("spark.sql.legacy.parquet.int96RebaseModeInRead", "LEGACY")

val args = GlueArgParser.getResolvedOptions(
  sysArgs, 
  Seq("JOB_NAME").toArray
)
Job.init(args("JOB_NAME"), glueContext, args.asJava)

方式B:继承Glue默认的SparkConf再初始化

// 获取Glue已有的Spark配置(如果上下文已初始化),或创建带默认配置的SparkConf
val conf = SparkContext.getOrCreate().getConf
conf.set("spark.sql.legacy.parquet.int96RebaseModeInRead", "LEGACY")

val spark: SparkContext = new SparkContext(conf)
val glueContext: GlueContext = new GlueContext(spark)

val args = GlueArgParser.getResolvedOptions(
  sysArgs, 
  Seq("JOB_NAME").toArray
)
Job.init(args("JOB_NAME"), glueContext, args.asJava)

补充说明

  • 如果你的Parquet数据是由Spark 2.x或旧版Hive写入的,选择LEGACY模式;如果数据是基于公历(Proleptic Gregorian)写入的,选择CORRECTED模式。
  • Glue 3.0及以上版本对应Spark 3.x,必须设置该参数来处理INT96格式的日期/时间戳兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:10:28