[英]AWS Glue python shell job can call AWS glue spark job
我是AWS GLUE的新手,只想解決一個特定問題。 目前,我只有Glue服務可用,而沒有EC2節點也沒有lambda。 我正在嘗試從Aws python shell膠水作業運行AWS Spark膠水作業。 是否有可能將AWS膠水python shell作業作為包裝運行,並使用不同的參數多次調用同一AWS膠水火花作業。 我試圖運行下面的代碼片段,但在日志中出現boto Ecxeption錯誤。
import boto3
glue = boto3.client(service_name='glue', region_name='us-east-1',
endpoint_url='https://glue.us-east-1.amazonaws.com')
myNewJobRun = glue.start_job_run(JobName='WHICH I CREATED IN CONSOLE')
在上面的代碼中,我已經在控制台中創建了一個作業,並希望從AWS python shell膠粘作業中完成該作業。
在下面,我想獲取作業的狀態(如果正在運行),它將等待一段時間,然后再次檢查狀態。
status = glue.get_job_run(JobName=myJob['Name'], RunId=JobRun['JobRunId'])
有人可以建議共享任何代碼示例以供參考
感謝Pradeep
什么是錯誤?
您可能必須將參數添加到start_job_run()
響應= gum.start_job_run(JobName = jobName,Arguments = arguments,AllocatedCapacity = dpus)
狀態= gel.get_job_run(JobName = jobName,RunId = response ['JobRunId'])
以下是示例代碼,該代碼將不斷檢查作業狀態,直到作業成功為止,並且如果觀察到任何錯誤狀態,則會引發異常:
import boto3
client = boto3.client(service_name='glue', region_name='us-east-1',
endpoint_url='https://glue.us-east-1.amazonaws.com')
response = client.start_job_run(JobName='WHICH U CREATED IN CONSOLE')
status = client.get_job_run(JobName=job_name, RunId=response['JobRunId'])
if status:
state = status['JobRun']['JobRunState']
while state not in ['SUCCEEDED']:
time.sleep(30)
status = client.get_job_run(JobName=job_name, RunId=response['JobRunId'])
state = status['JobRun']['JobRunState']
if state in ['STOPPED', 'FAILED', 'TIMEOUT']:
raise Exception('Failed to execute glue job: ' + status['JobRun']['ErrorMessage'] + '. State is : ' + state)
您可以根據需要修改條件和睡眠時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.