Sagemaker обрабатывает задание с помощью функций PySpark и Step

#python #amazon-web-services #pyspark #amazon-sagemaker #aws-step-functions

#python #amazon-веб-сервисы #pyspark #amazon-sagemaker #aws-step-функции

Вопрос:

это моя проблема: я должен запустить задание обработки Sagemaker, используя пользовательский код, написанный на PySpark. Я использовал SDK Sagemaker, выполнив следующие команды:

 spark_processor = sagemaker.spark.processing.PySparkProcessor(
        base_job_name="spark-preprocessor",
        framework_version="2.4",
        role=role_arn,
        instance_count=2,
        instance_type="ml.m5.xlarge",
        max_runtime_in_seconds=1800,
    )

    spark_processor.run(
        submit_app="processing.py",
        arguments=['s3_input_bucket', bucket_name,
                   's3_input_file_path', file_path
                   ]
    )
 

Теперь мне нужно автоматизировать рабочий процесс с помощью пошаговых функций. Для этой цели я написал лямбда-функцию, чтобы сделать это, но я получаю следующую ошибку:

 {
  "errorMessage": "Unable to import module 'lambda_function': No module named 'sagemaker'",
  "errorType": "Runtime.ImportModuleError"
}
 

Это моя лямбда-функция:

 import sagemaker

def lambda_handler(event, context):
    spark_processor = sagemaker.spark.processing.PySparkProcessor(
        base_job_name="spark-preprocessor",
        framework_version="2.4",
        role=role_arn,
        instance_count=2,
        instance_type="ml.m5.xlarge",
        max_runtime_in_seconds=1800,
    )

    spark_processor.run(
        submit_app="processing.py",
        arguments=['s3_input_bucket', event["bucket_name"],
                   's3_input_file_path', event["file_path"]
                   ]
    )

 

Мой вопрос: как я могу создать шаг в моей конечной машине для запуска кода PySpark с использованием обработки Sagemaker?

Спасибо

Ответ №1:

sagemaker sdk по умолчанию не установлен в среде лямбда-контейнера: вы должны включить его в лямбда-zip, который вы загружаете в s3.

Существуют различные способы сделать это, один из самых простых — развернуть ваш лямбда-интерфейс с помощью командной строки бессерверной модели приложения (SAM). В этом случае может быть достаточно sagemaker поместить requirements.txt в папку, содержащую ваш лямбда-код, и SAM гарантирует, что зависимость включена в zip.

В качестве альтернативы вы можете создать zip вручную с pip install sagemaker -t lambda_folder помощью, но вы должны выполнить эту команду в ОС Amazon Linux, например, с EC2 с соответствующим изображением или в контейнере Docker. Для получения дополнительной информации найдите «зависимости python в aws lambda».