使用AWS Glue作业在S3上读取/写入三角洲湖泊表

时间:2020-07-31 04:59:53

标签: apache-spark aws-glue delta-lake

我正在尝试使用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)。 谁可以帮我这个事 谢谢

3 个答案:

答案 0 :(得分:2)

我在使用Glue + Deltalake方面取得了成功。我将Deltalake依赖关系添加到了Glue作业的“ Depends jars path”部分。 这里有它们的列表(我正在使用Deltalake 0.6.1):

  • com.ibm.icu_icu4j-58.2.jar
  • io.delta_delta-core_2.11-0.6.1.jar
  • org.abego.treelayout_org.abego.treelayout.core-1.0.3.jar
  • org.antlr_antlr4-4.7.jar
  • org.antlr_antlr4-runtime-4.7.jar
  • org.antlr_antlr-runtime-3.5.2.jar
  • org.antlr_ST4-4.0.8.jar
  • org.glassfish_javax.json-1.0.4.jar

然后在您的Glue作业中,可以使用以下代码:

DateTimeOffset

答案 1 :(得分:1)

spark.jars.packages中设置SparkSession.builder.config无效。 spark.jars.packagesorg.apache.spark.deploy.SparkSubmitArguments/SparkSubmit处理。因此,必须将其作为spark-submitpyspark脚本的参数传递。调用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"