AWS Glue 错误 |无法使用 spark 从开发人员端点读取 Glue 表
Posted
技术标签:
【中文标题】AWS Glue 错误 |无法使用 spark 从开发人员端点读取 Glue 表【英文标题】:AWS Glue Error | Not able to read Glue tables from Developer End points using spark 【发布时间】:2018-04-22 03:46:37 【问题描述】:即使我授予了所有必需的 IAM 权限,我也无法访问 AWS Glue 表。我什至无法列出所有数据库。这是代码。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
# New recommendation from AWS Support 2018-03-22
newconf = sc._conf.set("spark.sql.catalogImplementation", "in-memory")
sc.stop()
sc = sc.getOrCreate(newconf)
# End AWS Support Workaround
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
错误就在这里。访问其中一个 Glue 表时。
datasource_history_1 = glueContext.create_dynamic_frame.from_catalog(database = "dev", table_name = "history", transformation_ctx = "datasource_history_1")
我也尝试列出数据库,其中我只能看到默认数据库,没有其他(我在 Glue 中创建的)
我试图参考下面的链接,仍然没有帮助我。
Unable to run scripts properly in AWS Glue PySpark Dev Endpoint
【问题讨论】:
这是一个我无法衡量的错误,我们不应该也排除错误吗?另外,我们是否有一些标准文档说我们不应该把我们的错误(如果它们是例外) 请阅读说明。错误当然非常有用(但如果您使用 PySpark,请不要切断 Java 回溯,这是大多数时候有用的事情发生的地方),但图像不是(很难阅读,具体取决于设备,并且无法搜索)。请发布文本版本。newconf = sc._conf.set("spark.sql.catalogImplementation", "in-memory")
如果你想使用 Glue 目录(一个 Hive 元存储),那么使用内存中的目录将切断该功能。内存目录将允许您将数据帧注册为表和临时表并在它们上运行 sparksql,但这些不会在您的 Glue 目录中。 AWS Support 的确切建议是什么?
【参考方案1】:
您的代码似乎直接来自这个问题 braj:Unable to run scripts properly in AWS Glue PySpark Dev Endpoint - 但该代码特定于我的 Amazon Glue 环境,我引用的表在您的环境中不存在。
为了使这个命令起作用:
datasource_history_1 = glueContext.create_dynamic_frame.from_catalog(database = "dev", table_name = "history", transformation_ctx = "datasource_history_1")
检查您自己的 Glue 目录 https://eu-west-1.console.aws.amazon.com/glue/home 并确保您在名为 dev 的数据库中有一个名为 history 的表。如果你不这样做,那么我不确定你希望从这段代码中看到什么行为。
我建议您在 Glue 中创建一个 Job 并让它首先为您生成源连接代码,而不是从其他人的 *** 答案中获取的脚本开始。以此为起点。它会在该脚本中为您生成 create_dynamic_frame.from_catalog 命令。
【讨论】:
嘿,不。当然,由于安全原因,我已经使用了我的表和架构,并且无法共享。我将用实际错误替换图像。以上是关于AWS Glue 错误 |无法使用 spark 从开发人员端点读取 Glue 表的主要内容,如果未能解决你的问题,请参考以下文章
从 EMR 迁移到 AWS Glue 后在 Spark SQL 中找不到表
将 Spark fileoutputcommitter.algorithm.version=2 与 AWS Glue 一起使用