#apache-spark #pyspark #amazon-sagemaker
#apache-spark #pyspark #amazon-sagemaker
Вопрос:
Я пытаюсь запустить задание обработки для машинного обучения, используя новый контейнер Sagemaker Spark. Кластер запускается, но я сразу же сталкиваюсь с ошибкой импорта — мои зависимости отсутствуют.
Я понимаю, что контейнер Spark не имеет этих зависимостей, и я попытался выполнить шаги, описанные в SO, чтобы установить их, а именно, используя параметр submit_py_files в PySparkProcessor.run(), чтобы отправить ZIP-файл со всеми моими зависимостями. Однако, похоже, он их не устанавливает.
Есть ли способ использовать класс Sagemaker PySparkProcessor для выполнения сценария начальной загрузки при запуске кластера? В настоящее время я пытаюсь запустить рабочую нагрузку обработки, которая использует pandas_udfs, и вижу ImportError, когда кластер пытается использовать PyArrow:
Traceback (most recent call last):
File "/opt/ml/processing/input/code/spark_preprocess.py", line 35 in <module>
@pandas_udf("float", PandasUDFType.GROUPED_AGG)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/udf.py", line 47, in _create_udf
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 149 in require_minimum_pyarrow_version
ImportError: PyArrow >= 0.8.0 must be installed; however, it was not found.
The dependencies.zip содержит PyArrow 0.16.0, и я использую последнюю версию Sagemaker Python SDK.
Я знаю, что с помощью EMR вы можете отправить сценарий действия начальной загрузки для установки зависимостей — есть ли здесь аналогичный вариант? Спасибо!