我正在尝试使用AWS胶粘作业访问S3上的Delta湖表,但是由于“未定义模块Delta”而出现错误
from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
spark = SparkSession.builder.appName("MyApp").config("spark.jars.packages", "io.delta:delta-core_2.11:0.6.0").getOrCreate()
from delta.tables import *
data = spark.range(0, 5)
data.write.format("delta").save("S3://databricksblaze/data")
也在胶粘作业的依赖项jar中添加了必要的Jar(delta-core_2.11-0.6.0.jar)。 谁可以帮我这个事 谢谢
答案 0 :(得分:2)
我在使用Glue + Deltalake方面取得了成功。我将Deltalake依赖关系添加到了Glue作业的“ Depends jars path”部分。 这里有它们的列表(我正在使用Deltalake 0.6.1):
然后在您的Glue作业中,可以使用以下代码:
DateTimeOffset
答案 1 :(得分:1)
在spark.jars.packages
中设置SparkSession.builder.config
无效。 spark.jars.packages
由org.apache.spark.deploy.SparkSubmitArguments/SparkSubmit
处理。因此,必须将其作为spark-submit
或pyspark
脚本的参数传递。调用SparkSession.builder.config
时,SparkSubmit
已完成工作。因此,spark.jars.packages
目前无法操作。有关更多详细信息,请参见https://issues.apache.org/jira/browse/SPARK-21752。
答案 2 :(得分:0)
您需要传递其他配置属性
--conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"