首页 > 解决方案 > 通过在 EMR 上运行的 PySpark 中的 Glue 数据目录访问 DynamoDB 时,绝对 URI 异常中的相对路径

问题描述

我正在 AWS EMR 上执行一个 pyspark 应用程序,该应用程序配置为使用 AWS Glue 数据目录作为元存储。我在 AWS Glue 中有一个指向 DynamoDB 表的表设置。现在在我的 pyspark 脚本中,我正在尝试访问 Glue 表。我能够做到show tables并且能够看到胶水表。但是当我尝试查询表格时,我遇到了异常,

pyspark.sql.utils.AnalysisException: u'java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: arn:aws:dynamodb:<region>:<acct_id>:table/DDBTABLE;'

我在 pyspark 脚本中的查询:

spark.sql("select * from ddbtable").show()

在这方面找不到任何好的参考。我看到人们谈论spark.sql.warehouse.dir. 但不确定它与粘合数据目录有何关系。任何输入?

标签: amazon-dynamodbpyspark-sqlamazon-emrspark-hiveaws-glue-data-catalog

解决方案


联系了 AWS 技术,显然这是 EMR(截至 5.23.0)在使用 Glue 数据目录和访问连接到 DynamoDB 的 Glue 表时出现的问题。他们仍在为此努力,同时提供了以下解决方法。

编辑 Glue 表的属性文件以包含以下内容,

更新:位置属性到某个虚拟 S3 位置,使其格式为 - s3://dummy-path

add :在参数下添加以下 DynamoDB 特定信息,

"dynamodb.table.name": "ddb-table",
"dynamodb.column.mapping": "col:col",
"storage_handler": "org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler"

如需更新胶水表,请参阅此处


推荐阅读