amazon-dynamodb - 通过在 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
. 但不确定它与粘合数据目录有何关系。任何输入?
解决方案
联系了 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"
如需更新胶水表,请参阅此处
推荐阅读
- excel - 折叠维度层次结构下的重复结果
- python-3.x - struct.error: unpack 需要 4 个字节的缓冲区
- django - 在 Django 表单中,字段的逻辑验证
- tensorflow - 用于 MNIST 的 CNN,具有高效的滑动窗口,可实时检测
- gatsby - Netlify 部署:带模糊的图像
- clojure - 使用 instaparse 动态构建 clara 规则时遇到问题
- node.js - 在超级账本结构中动态执行事务时出错
- php - 正则表达式模式结束子组
- python - 如何正确创建日期范围并重新排列(使用交叉表/数据透视表)表?
- java - 如何通过freemarker中的键值访问json值?