gbe*_*ven 4 python configuration amazon-web-services boto3 aws-glue
我尝试在 AWS Glue Spark 作业中运行最新版本的 boto3,以访问 Glue 默认版本中不可用的方法。
为了获取 boto3 的默认版本并验证我想要访问的方法不可用,我运行了这段代码,除了我的print语句之外,它都是样板代码:
import sys
import boto3
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
athena = boto3.client('athena')
print(boto3.__version__) # verify the default version boto3 imports
print(athena.list_table_metadata) # method I want to verify I can access in Glue
job.commit()
Run Code Online (Sandbox Code Playgroud)
返回
1.12.4
回溯(最近一次调用最后一次):文件“/tmp/another_sample”,第 20 行,在 print(athena.list_table_metadata) 文件“/home/spark/.local/lib/python3.7/site-packages/botocore/client. py”,第 566 行,getattr self. 班级。名称,项目)AttributeError:“Athena”对象没有属性“list_table_metadata”
好的,正如旧版本 boto3 所预期的那样。让我们尝试导入最新版本...
我执行以下步骤:
返回
1.17.9
回溯(最近一次调用最后一次):文件“/tmp/another_sample”,第 20 行,在 print(athena.list_table_metadata) 文件“/home/spark/.local/lib/python3.7/site-packages/botocore/client. py”,第 566 行,getattr self. 班级。名称,项目)AttributeError:“Athena”对象没有属性“list_table_metadata”
如果我在本地运行相同的脚本(运行 1.17.9),我可以找到该方法:
1.17.9
<位于 0x7efd8a4f4710 的 <botocore.client.Athena 对象的绑定方法 ClientCreator._create_api_method.._api_call>>
关于这里发生的事情以及如何访问我期望应该在升级版本中导入的方法有什么想法吗?