AWS胶水错误|无法使用spark从Developer End点读取Glue表

时间:2018-04-22 03:46:38

标签: pyspark spark-dataframe aws-glue

即使我已经提供了所有必需的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

1 个答案:

答案 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命令。