在 EMR 上通过 PySpark 运行 中的 Glue 数据目录访问 DynamoDB 时,绝对 URI 异常中的相对路径
Relative path in absolute URI Exception while accessing DynamoDB via Glue Data Catalogue in PySpark running on EMR
我正在 AWS EMR 上执行一个 pyspark 应用程序,该应用程序配置为使用 AWS Glue 数据目录作为元存储。我在 AWS Glue 中有一个指向 DynamoDB table 的 table 设置。现在在我的 pyspark 脚本中,我正在尝试访问 Glue table。我能够做到 show tables
并且能够看到胶水 table。但是当我尝试查询 table 时,我遇到了以下异常,
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
的问题。但不确定它与胶水数据目录有何关系。有任何输入吗?
联系了 AWS 技术人员,显然这是在使用 Glue 数据目录和访问连接到 DynamoDB 的 Glue table 时 EMR(从 5.23.0 开始)的问题。他们仍在努力解决这个问题,同时提供了以下解决方法。
编辑 Glue table 的属性文件以包含在下面,
更新 : 位置 属性 到某个虚拟 S3 位置,使其具有以下形式 - s3://dummy-path
add : 在参数下面添加DynamoDB具体信息,
"dynamodb.table.name": "ddb-table",
"dynamodb.column.mapping": "col:col",
"storage_handler": "org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler"
更新胶水table参考here
我正在 AWS EMR 上执行一个 pyspark 应用程序,该应用程序配置为使用 AWS Glue 数据目录作为元存储。我在 AWS Glue 中有一个指向 DynamoDB table 的 table 设置。现在在我的 pyspark 脚本中,我正在尝试访问 Glue table。我能够做到 show tables
并且能够看到胶水 table。但是当我尝试查询 table 时,我遇到了以下异常,
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
的问题。但不确定它与胶水数据目录有何关系。有任何输入吗?
联系了 AWS 技术人员,显然这是在使用 Glue 数据目录和访问连接到 DynamoDB 的 Glue table 时 EMR(从 5.23.0 开始)的问题。他们仍在努力解决这个问题,同时提供了以下解决方法。
编辑 Glue table 的属性文件以包含在下面,
更新 : 位置 属性 到某个虚拟 S3 位置,使其具有以下形式 - s3://dummy-path
add : 在参数下面添加DynamoDB具体信息,
"dynamodb.table.name": "ddb-table",
"dynamodb.column.mapping": "col:col",
"storage_handler": "org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler"
更新胶水table参考here