即使我已经提供了所有必需的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")
我试图列出数据库,我只能看到默认数据库,没有别的(我在胶水中创建)
我试着参考下面的链接,仍然没有帮助我。
Unable to run scripts properly in AWS Glue PySpark Dev Endpoint
答案 0 :(得分:0)
您似乎直接从这个问题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 Catalog https://eu-west-1.console.aws.amazon.com/glue/home并确保在名为dev的数据库中有一个名为history的表。如果您不这样做,那我就不确定您希望从此代码中看到什么行为。
我建议您在Glue中创建一个Job并让它首先为您生成源连接代码,而不是从其他人的脚本中获取StackOverflow的答案。以此为出发点。它将在该脚本中为您生成create_dynamic_frame.from_catalog命令。