簡體   English   中英

AWS Glue python Shell作業可以調用AWS Glue Spark作業

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM