#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».