AWS Glue python shell может вызывать AWS Glue Spark Job - PullRequest
0 голосов
/ 30 мая 2019

Я новичок в AWS GLUE и просто хочу решить конкретную проблему.В настоящее время у меня есть только доступный сервис Glue и нет узла EC2, нет лямбды.Я пытаюсь запустить работу по склеиванию AWS с помощью склеивания оболочки Python Aws.Можно ли запустить задание оболочки Python для клеевого соединения AWS в качестве оболочки и многократно вызывать одно и то же задание 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')

В приведенном выше коде я уже создал задание в консоли и хочу выполнить задание из задания склейки оболочки Python AWS.

Ниже я хочу получить статус задания, если оно выполняется, тогда оно подождет некоторое время, а затем снова проверит статус.

status = glue.get_job_run(JobName=myJob['Name'], RunId=JobRun['JobRunId'])

Может кто-то посоветует поделиться любым примером кодадля справки

Спасибо, Прадип

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Ниже приведен пример кода, который продолжает проверять состояние задания до тех пор, пока задание не будет УСПЕШНО, и вызывает исключение, если наблюдается любое из состояний ошибки:

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)

Вы можете изменить условия и время сна согласно вашему требованию.

1 голос
/ 30 мая 2019

Что такое ошибка?

Возможно, вам придется добавить аргументы для start_job_run ()

response = glue.start_job_run ( JobName = jobName, аргументы = аргументы, AllocatedCapacity = dpus)

status = glue.get_job_run (JobName = jobName, RunID = ответ [ 'JobRunId'])

...