[英]How to run an AWS Glue 1.0 Python Shell Job with the Current Version of boto3?
[英]AWS Glue Job Wrong boto3 Version
我正在嘗試在 AWS Glue 火花作業中運行最新版本的 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()
返回
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. class 。 name , item) AttributeError: 'Athena' object has no attribute '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. class 。 name , item) AttributeError: 'Athena' object has no attribute 'list_table_metadata'
如果我在本地運行相同的腳本,它正在運行 1.17.9,我可以找到該方法:
1.17.9
<botocore.client.Athena object at 0x7efd8a4f4710的<綁定方法ClientCreator._create_api_method.._api_call>>
關於這里發生了什么以及如何訪問我期望應該在升級版本中導入的方法的任何想法?
最終在AWS 文檔中找到了解決方案。
在作業的安全配置、腳本庫和作業參數(可選)部分下的 Glue作業參數中添加了以下鍵/值對:
關鍵:
--additional-python-modules
價值:
botocore>=1.20.12,boto3>=1.17.12
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.