내용으로 건너뛰기

Sparkmagic 커널을 실행하는 SageMaker 노트북에서 “ModuleNotFoundError” 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

Sparkmagic(PySpark) 커널을 사용하여 Amazon SageMaker 노트북 인스턴스를 실행하려고 합니다. pip를 사용하여 Python 라이브러리를 설치했지만 다음 오류가 표시됩니다. "ModuleNotFoundError: No module named my_module_name."

간략한 설명

Sparkmagic 커널을 사용할 때 SageMaker 노트북은 Apache Spark 세션의 인터페이스 역할을 합니다. Apache Spark 세션은 원격 Amazon EMR 클러스터 또는 AWS Glue 개발 엔드포인트에서 실행됩니다. pip를 사용하여 노트북 인스턴스에 Python 라이브러리를 설치하면 라이브러리는 로컬 노트북 인스턴스에서만 사용할 수 있습니다. ModuleNotFoundError를 해결하려면 AWS Glue 개발 엔드포인트 또는 EMR 클러스터의 각 노드에 라이브러리를 설치하십시오.

참고: 라이브러리를 사용하는 코드가 컴퓨팅 집약적이지 않은 경우 로컬 모드(%%local)를 사용하십시오. 로컬 모드는 로컬 노트북 인스턴스에서만 셀을 실행합니다. 로컬 모드를 사용하는 경우 원격 클러스터 또는 개발 엔드포인트에 라이브러리를 설치할 필요가 없습니다.

해결 방법

AWS Glue 개발 엔드포인트에 라이브러리 설치

AWS Glue 개발 엔드포인트에 라이브러리를 설치하려면 개발 엔드포인트에서 Python 라이브러리 로드를 참조하십시오.

Amazon EMR 클러스터에 라이브러리 설치

참고: 다음 명령에서 Example-Library를 사용하려는 라이브러리로 바꾸십시오.

원격 Amazon EMR 클러스터에 라이브러리를 설치하려면 클러스터 생성 시 부트스트랩 작업을 사용하십시오. Amazon EMR 클러스터를 SageMaker 노트북 인스턴스에 연결한 경우 모든 클러스터 노드에 라이브러리를 수동으로 설치하십시오.

다음 단계를 완료합니다.

  1. SSH를 사용하여 기본 노드에 연결합니다.

  2. 라이브러리 설치:

    sudo python -m pip install pandas
  3. 모듈이 성공적으로 설치되었는지 확인:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. Amazon SageMaker 노트북 인스턴스를 열고, 커널을 다시 시작합니다.

  5. 라이브러리가 작동하는지 확인하려면 다음과 같이 라이브러리가 필요한 명령을 실행합니다.

    pdf = spark.sql("show databases").toExample-library()
  6. SSH를 사용하여 다른 클러스터 노드에 연결하고, 각 노드에 라이브러리를 설치합니다.

로컬 모드 사용

원격 클러스터 또는 개발 엔드포인트에서 코드를 실행할 필요가 없는 경우 로컬 노트북 인스턴스를 사용하십시오. 예를 들어, Spark 클러스터의 각 노드에 matplotlib을 설치하지 마십시오. 대신 로컬 모드(%%local)를 사용하여 로컬 노트북 인스턴스에서 셀을 실행하십시오.

참고: 다음 명령에서 예제 변수를 사용자의 변수로 바꾸십시오.

결과를 로컬 변수로 내보내고 로컬 모드에서 코드를 실행하려면 다음 단계를 완료합니다.

  1. 결과를 로컬 변수로 내보내기:

    %%sql -o query1SELECT 1, 2, 3
  2. 로컬 코드 실행:

    %%localprint(len(query1))

Spark 파이프라인에서 SageMakerRestimator를 사용하려면 로컬 Spark 세션을 실행하여 데이터를 수정하십시오. 그런 다음 SageMaker Spark 라이브러리를 사용하여 훈련을 시키고 예측을 실시하십시오. 자세한 내용은 AWS Labs GitHub 리포지토리의 sagemaker-spark를 참조하십시오.

노트북 예제를 보려면 AWS Labs GitHub 리포지토리의 pyspark_mnist_kmeans를 참조하십시오. 노트북 예제는 EMR 클러스터에서 지원하지 않는 conda_python3 커널을 사용합니다. 워크로드가 많은 작업의 경우 원격 Spark 클러스터를 생성하고, 클러스터를 노트북 인스턴스에 연결합니다.

관련 정보

Amazon SageMaker에서 Apache Spark 사용

Amazon EMR에서 Spark 지원 Amazon SageMaker 노트북 빌드