繁体   English   中英

运行胶水作业时出现 InvocationTargetException

[英]getting InvocationTargetException when running my glue job

我试图理解为什么会出现以下错误。

“Py4JJavaError:调用 None.org.apache.spark.sql.SparkSession 时发生错误。java.lang.reflect.InvocationTargetException”

基本上,我正在尝试使用 delta 模块在胶水作业中对我的表执行“upsert”方法。

当我运行以下代码时,出现上述错误。

from delta import *
from pyspark.sql.session import SparkSession
spark = SparkSession \
          .builder \
          .config("spark.jars.packages", "io.delta:delta-core_2.11:0.5.0")\
          .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
          .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \
          .getOrCreate()```

This is the only piece I run and get the error. Do you have any ideas why this is happening? 
 

很可能,您使用了错误的版本,可能是 Glue3.0。 有一些解决方法可以将 Delta 与 Glue2.0 一起使用,但是当您尝试将它们与 Glue3.0 一起使用时,这些方法可能会产生此类错误。 此外,在内部设置 spark 会话配置对某些参数不起作用,这取决于我猜的版本。

不过不用担心,AWS 发布了 Glue 第 4 版,这里是官方公告

这是使用 Delta with Glue 的官方指南,下面我将说明使其工作的要点。

第一个也是最棘手的部分是提供 delta 的配置。 您现在可以像在 Glue4.0 中那样做。 在旧版本中,您通过 Glue 的作业参数在 conf 参数中发送 conf 参数来完成此操作:)

--conf = spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog

您必须将作业参数中的--datalake-format参数设置为delta

之后,确保您选择了 Glue4.0。 此外,请确保在脚本中或使用爬虫处理符号链接清单文件。

如果你想要更多的灵活性,你也可以选择使用 AWS 的 EMR 服务, 这里有一个使用 Delta 的演练

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM