gpt4 book ai didi

python - 如何从本地计算机使用 python 2.7 执行 aws 胶水脚本?

转载 作者:太空狗 更新时间:2023-10-30 01:19:12 27 4
gpt4 key购买 nike

我在 python 2.7 环境中安装了 aws cliboto3。我想执行各种操作,例如获取架构信息、获取 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

glueContext = GlueContext(SparkContext.getOrCreate())
persons = glueContext.create_dynamic_frame.from_catalog(
database="records",
table_name="recordsrecords_converted_json")
print "Count: ", persons.count()
persons.printSchema()

我收到错误 ImportError: No module named awsglue.transforms 这应该是正确的,因为 boto3 中不存在我使用命令 dir(boto3) 识别的此类包>。我发现 boto3 通过 awscli 提供了各种客户端调用,我们可以使用 client=boto3.client('glue') 访问它们。因此,为了获取上述模式信息,我尝试了以下示例代码:

import sys
import boto3
client=boto3.client('glue')
response = client.get_databases(
CatalogId='string',
NextToken='string',
MaxResults=123
)
print client

但是我得到了这个错误:AccessDeniedException:调用 GetDatabases 操作时发生错误 (AccessDeniedException):不允许跨帐户访问。

我很确定其中之一或可能两者都是获得我想要获得的东西的正确方法,但这里有些东西不属于正确的位置。有没有像我上面尝试的那样在本地使用 python 2.7 从 AWS Glue 获取有关架构和数据库表的详细信息的想法?

最佳答案

以下代码对我有用,并且我使用本地设置的 Zeppelin 笔记本作为开发端点。 printschema 从数据目录中读取模式。

希望您也启用了 ssh 隧道。

%pyspark
import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.transforms import *
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

# Create a Glue context
glueContext = GlueContext(SparkContext.getOrCreate())

# Create a DynamicFrame using the 'persons_json' table
medicare_dynamicframe = glueContext.create_dynamic_frame.from_catalog(database="payments", table_name="medicaremedicare_hospital_provider_csv")

# Print out information about this data
print "Count: ", medicare_dynamicframe.count()
medicare_dynamicframe.printSchema()

您可能还需要对 Spark 解释器进行一些更改(勾选顶部的连接到现有进程选项,以及主机(本地主机)、端口号(9007)。

对于第二部分 您需要执行aws configure,然后在安装boto3 客户端后创建glue 客户端。在此之后,检查您的代理设置是否隐藏在防火墙或公司网络后面。

需要明确的是,boto3 客户端对所有与 AWS 相关的客户端 api 和服务器端都有帮助,Zeppelin 方式是最好的。

希望这对您有所帮助。

关于python - 如何从本地计算机使用 python 2.7 执行 aws 胶水脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com