- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 python 2.7
环境中安装了 aws cli
和 boto3
。我想执行各种操作,例如获取架构信息、获取 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/
bucket/ ├── seoul/ │ ├── weather/ │ │ └── data.json │ └── gdp/ │ └── data.json ├── tok
我创建了一个成功执行的 AWS 粘合作业。但是,我无法在作业中放置任何自定义日志记录。 如何在 AWS S3 存储桶中创建日志文件,以便跟踪日常作业执行情况? 目前,当我的作业执行时,它会创建默认日志
我正在尝试将由我的 AWS Glue 爬虫映射到 Python 中的嵌套字典的表中的字段映射展开。但是,我找不到任何 Spark/Hive 解析器来反序列化 var_type = 'struct>,n
我们正在为 STM32 芯片上的 ARM Cortex M4 编写一些代码。 我的理解是 Cortex-M4 有一些 32 位指令,但这些不是 32 位 ARM 指令,它们只是一些特殊指令。我认为胶水
我已经定义了一个基本脚本来使用来自 redshift 中的一个表的数据创建 DF。我运行了该过程,但我已经为一条无法解释的消息而苦苦挣扎了一段时间。 日志中输出的错误为: “/mnt/yarn/use
我已经在 Scala 中学习了 Spark,但我对 pySpark 和 AWS Glue 还很陌生, 所以我遵循了 AWS 的这个官方教程。 https://docs.aws.amazon.com/j
我在 S3 中有一个 csv 文件,它没有任何引号。 例如。 dVsdfsCcn7j6,r:werwerwerwerwerwerwerwer,_User$SSSSSBFwJ,login,passwor
有谁知道在 Glue 作业中将源文件名添加为列的方法吗? 我们创建了一个流,我们在其中抓取 S3 中的一些文件以创建架构。然后,我们编写了一个将文件转换为新格式的作业,并将这些文件作为 CSV 写回另
一直在使用awsglue python shell作业构建简单的数据etl作业,对于spark作业,只使用过一两次转换为orc格式或在JDBC数据上执行spark sql。那么想知道每个用例的最佳/典
我正在创建 AWS Glue ETL 作业,但在文件检索方面遇到了一些障碍。 似乎以下代码仅获取根文件夹 2017 中的文件,而不再获取更多文件。有没有办法在其中包含所有子文件夹和文件? dyf =
我想使用 ETL 从 S3 读取数据。由于使用 ETL 作业,我可以设置 DPU 以加快速度。 但是我该怎么做呢?我试过 import sys from awsglue.transforms impo
我在本地开发了一个 pandas etl 脚本并且工作正常。 我准备了一个wheel文件并上传到s3。所有软件包都已正确安装。 但是,当脚本运行时,它显示 ImportError: cannot im
运行 AWS Glue 爬网程序时,它无法识别时间戳列。 我在 CSV 文件中正确格式化了 ISO8601 时间戳。首先,我希望 Glue 自动将这些归类为时间戳,但事实并非如此。 我还尝试了此链接中
为了使用 boto3 运行作业,documentation仅国家 JobName是必须的。但是,我的代码: def start_job_run(self, name): pri
为了使用 boto3 运行作业,documentation仅国家 JobName是必须的。但是,我的代码: def start_job_run(self, name): pri
我正在尝试从该作业的脚本访问 AWS ETL Glue 作业 ID。这是您可以在 AWS Glue 控制台的第一列中看到的 RunID,类似于 jr_5fc6d4ecf0248150067f2 .如何
使用 AWSglue 以及 AWS s3 和 s3fs,我提出了以下方案(以及其他尝试)。我什至在 https://s3fs.readthedocs.io/en/latest/ 上看到了例子但他们并没
我是一名优秀的程序员,十分优秀!