使用boto3 clien提交时,sparksubmit EMR步骤失败

2024-05-23 22:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用boto3客户端执行spark submit for EMR。 在执行下面的代码之后,EMR步骤提交,几秒钟后失败。如果在EMR主机上手动执行,步骤日志中的实际命令行是有效的。在

控制器日志显示几乎不可读的垃圾,看起来像是多个进程同时在其中写入。在

UPD:尝试了命令-跑步者.jar和EMR版本4.0.0和4.1.0

有什么好主意吗。在

代码片段:

class ProblemExample:
    def run(self):
        session = boto3.Session(profile_name='emr-profile')
        client = session.client('emr')
        response = client.add_job_flow_steps(
        JobFlowId=cluster_id,
        Steps=[
            {
                'Name': 'string',
                'ActionOnFailure': 'CONTINUE',
                'HadoopJarStep': {
                    'Jar': 's3n://elasticmapreduce/libs/script-runner/script-runner.jar',
                    'Args': [
                        '/usr/bin/spark-submit',
                        '--verbose',
                        '--class',
                        'my.spark.job',
                        '--jars', '<dependencies>',
                        '<my spark job>.jar'
                    ]
                }
            },
        ]
    )

Tags: 代码clientsessionscript步骤jobboto3profile
1条回答
网友
1楼 · 发布于 2024-05-23 22:37:00

最后通过正确地转义jars值解决了这个问题。在

spark submit未能找到类,但在混乱的日志背景下,错误并不清楚。在

有效的例子是:

class Example:
  def run(self):
    session = boto3.Session(profile_name='emr-profile')
    client = session.client('emr')
    response = client.add_job_flow_steps(
    JobFlowId=cluster_id,
    Steps=[
        {
            'Name': 'string',
            'ActionOnFailure': 'CONTINUE',
            'HadoopJarStep': {
                'Jar': 'command-runner.jar',
                'Args': [
                    '/usr/bin/spark-submit',
                    ' verbose',
                    ' class',
                    'my.spark.job',
                    ' jars', '\'<coma, separated, dependencies>\'',
                    '<my spark job>.jar'
                ]
            }
        },
    ]
)

相关问题 更多 >