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 火花胶水作业。是否可以将 运行 AWS glue python shell 作业作为包装器并使用不同参数多次调用同一个 AWS glue spark 作业。
我尝试 运行 下面的代码片段,但在日志中出现 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 胶水作业中获取该作业。
下面我想获取作业的状态,如果它是运行ning那么它会等待一段时间然后再次检查状态。
status = glue.get_job_run(JobName=myJob['Name'], RunId=JobRun['JobRunId'])
有人可以建议分享任何代码示例以供参考
谢谢
普拉迪普
什么是错误?
您可能需要向 start_job_run()
添加参数
response = glue.start_job_run(
JobName=jobName, Arguments=arguments, AllocatedCapacity=dpus)
status = glue.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)
您可以根据需要修改条件和睡眠时间。
我是 AWS GLUE 的新手,只想解决一个特定的问题。目前我只有 Glue 服务可用,没有 EC2 节点没有 lambda。 我正在尝试 运行 来自 Aws python shell 胶水作业的 AWS 火花胶水作业。是否可以将 运行 AWS glue python shell 作业作为包装器并使用不同参数多次调用同一个 AWS glue spark 作业。 我尝试 运行 下面的代码片段,但在日志中出现 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 胶水作业中获取该作业。
下面我想获取作业的状态,如果它是运行ning那么它会等待一段时间然后再次检查状态。
status = glue.get_job_run(JobName=myJob['Name'], RunId=JobRun['JobRunId'])
有人可以建议分享任何代码示例以供参考
谢谢 普拉迪普
什么是错误?
您可能需要向 start_job_run()
添加参数response = glue.start_job_run( JobName=jobName, Arguments=arguments, AllocatedCapacity=dpus)
status = glue.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)
您可以根据需要修改条件和睡眠时间。