Как устранить ошибку «модуль не найден» для пакетов Python в PySpark в AWS Sagemaker?Python

Программы на Python
Ответить
Anonymous
 Как устранить ошибку «модуль не найден» для пакетов Python в PySpark в AWS Sagemaker?

Сообщение Anonymous »

У меня есть бизнес-требование использовать Spark с использованием Sagemaker Processing. Мне нужно запустить распределенный код с использованием pandas, numpy, gensim и sklearn. Я создал ZIP-файл всех установленных пакетов и поместил его на s3, а затем передал файл в качестве входного параметра в методе запуска процесса PySpark. Но я столкнулся с проблемой, когда искра не распознает gensim и sklearn. Я могу без проблем загружать pandas и numpy. Но для gensim и sklearn я получаю ошибку:
No module name sklearn
No module name gensim

Я попытался решить эту проблему в 4 шага:
  • Шаг 1 (подготовка файла require.txt):< /li>
numpy==1.23.5
pandas==1.5.3
scikit-learn==1.2.2
pyarrow==11.0.0
gensim==4.3.1
  • Шаг 2 (установка и упаковка) в терминале sagemaker внутри блокнота sagemaker:
cd /home/ec2-user/SageMaker/python_dependencies

pip install -r requirements.txt -t ./packages"

zip -r dependencies.zip ./packages

aws s3 cp dependencies.zip s3://data-science/code/dependencies/
  • Шаг 3 (обновление кода процессора):
#Define the PySparkProcessor:
spark_processor = PySparkProcessor(
base_job_name="sm-spark",
framework_version="3.1",
role=role,
instance_count=default_instance_count, # Adjust the instance count as needed
instance_type=default_instance, # Adjust the instance type as needed
max_runtime_in_seconds=1200)

# Setting input bucket:
input_bucket = 'data-science”

# Define the number of records wanted:
number = "100" # Change this as needed

# Run the Spark job:
spark_processor.run(
submit_app="process.py",
arguments=[input_bucket, number],
submit_py_files=["s3://data-science/code/dependencies/dependencies.zip"],
spark_event_logs_s3_uri="s3://data-science/spark_event_logs",
logs=False,)
  • Шаг 4 (наш файлprocess.py):
# Initialize Spark session:
spark = SparkSession.builder \
.appName("Spark Processing Job") \
.getOrCreate()

print("Spark session initialized with optimized configuration.")

# setting the spark context to pick the py file for dependencies
sc = SparkContext.getOrCreate()
sc.addPyFile(local_dependencies_path)
print("Py file added")

# Import all python dependencies:
try:
import pandas as pd
print(f"Pandas version: {pd.__version__}")
import numpy as np
print(f"Numpy version: {np.__version__}")
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.metrics.pairwise import euclidean_distances
print("Sklearn metrics loaded")
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
print("Gensim models loaded")
except ImportError as e:
# Log the error and terminate the job
print(f"Dependency loading error: {e}")
raise SystemExit(f"Job terminated due to missing dependencies: {e}")



Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-aws-sa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»