通过AWS Glue中注册的本地Spark SQL读取DeltaLake表

问题描述 投票:0回答:1

我在存储在 S3 上的 AWS Glue Catalog 上注册了

orders
delta Lake 表。

val spark = SparkSession.builder()
      .appName("GlueDeltaLakeExample")
      .master("local")
      .config("spark.sql.catalogImplementation", "hive")
      .config("spark.hadoop.hive.metastore.client.factory.class", "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory")
      .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
      .config("spark.sql.catalog.glue", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
      .enableHiveSupport()
      .getOrCreate()


    val df = spark.sql("SELECT * FROM example.orders limit 10")

    df.show()
    spark.stop()

我配置了以下环境变量

AWS_ACCESS_KEY_ID=xxxx;
AWS_DEFAULT_REGION=eu-west-3;
AWS_SECRET_ACCESS_KEY=xxx;

我尝试在本地计算机中运行此代码,但它没有连接到 AWS Glue,而是创建本地元存储并显示表不存在的错误。

apache-spark apache-spark-sql aws-glue delta-lake
1个回答
0
投票

我在您的示例代码中看不到您在增量表中加载的位置。假设不是故意省略的话,先尝试本地加载

spark.read.format("delta").load("s3a://<your-s3-bucket>/<path-to-delta-table>")
© www.soinside.com 2019 - 2024. All rights reserved.