Amazon EMR 클러스터에 Spark 또는 Scala 기반 라이브러리를 영구적으로 설치하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 11월 20일

Amazon EMR 클러스터에 패키지를 영구적으로 설치한 다음 EMR 노트북의 패키지에 액세스하려면 어떻게 해야 합니까?

해결 방법

다음 예제에서는 GraphFrames웹 사이트에서 GraphFrame을 설치합니다. EMR 노트북의 PySpark 커널에서 액세스하려는 Spark 또는 Scala 기반 라이브러리를 영구적으로 설치하려면 다음 단계를 수행하세요.

부트스트랩 작업 스크립트 준비

1.    라이브러리용 JAR을 다운로드합니다.

2.    JAR를 Amazon Simple Storage Service(Amazon S3) 버킷에 업로드합니다.

3.    다음과 유사한 부트스트랩 작업 스크립트를 생성합니다. 이 예제 스크립트는 Amazon EMR 클러스터의 모든 노드에 GraphFrames 라이브러리를 자동으로 설치합니다. s3://doc-example-bucket/graphframes-0.8.0-spark2.4-s_2.11.jar를 S3 버킷의 JAR에 대한 경로로 바꿉니다.

#!/bin/bash
# These two following statements install the graphframes library on all nodes of an EMR cluster for Python base version 2.7 and Python 3.
sudo pip-3.6 install graphframes
sudo pip install graphframes
# The following statement copies the GraphFrames Spark jar from an S3 bucket to all nodes of an EMR cluster on the required path.
sudo aws s3 cp s3://doc-example-bucket/graphframes-0.8.0-spark2.4-s_2.11.jar /usr/lib/spark/jars/

3.    부트스트랩 작업 스크립트를 S3 버킷에 업로드합니다.

4.    Amazon EMR 콘솔을 엽니다.

5.    [클러스터 생성(Create cluster)]을 선택한 다음 [고급 옵션으로 이동(Go to advanced options)]을 선택합니다.

6.    소프트웨어 구성 섹션에서 Hive, Livy 및 Spark를 선택합니다. EMR 노트북을 실행하려면 이러한 소프트웨어 패키지가 필요합니다. 자세한 내용은 클러스터 요구 사항을 참조하세요.

7.    클러스터 생성을 계속합니다. 3단계: 일반 클러스터 설정 페이지에서 부트스트랩 작업 스크립트의 경로를 입력합니다. 자세한 내용은 콘솔을 사용하여 사용자 지정 부트스트랩 작업 추가를 참조하세요.

8.    클러스터 생성을 마칩니다.

9.    방금 생성한 클러스터를 사용하여 EMR 노트북을 생성합니다.

10.   노트북이 준비되면 JupyterLab에서 열기(Open in JupyterLab)를 선택합니다.

11.   PySpark 커널을 사용하여 PySpark 코드를 테스트하려면 다음과 유사한 코드 조각을 실행합니다. 이 코드가 성공하면 GraphFrame이 올바르게 설치됩니다.

          from pyspark import *
          from pyspark.sql import *
          from graphframes import *
          spark = SparkSession.builder.appName('fun').getOrCreate()
          vertices = spark.createDataFrame([('1', 'Carter', 'Derrick', 50),
                                            ('2', 'May', 'Derrick', 26),
                                           ('3', 'Mills', 'Jeff', 80),
                                            ('4', 'Hood', 'Robert', 65),
                                            ('5', 'Banks', 'Mike', 93),
                                           ('98', 'Berg', 'Tim', 28),
                                           ('99', 'Page', 'Allan', 16)],
                                           ['id', 'name', 'firstname', 'age'])
          edges = spark.createDataFrame([('1', '2', 'friend'),
                                         ('2', '1', 'friend'),
                                        ('3', '1', 'friend'),
                                        ('1', '3', 'friend'),
                                         ('2', '3', 'follows'),
                                         ('3', '4', 'friend'),
                                         ('4', '3', 'friend'),
                                         ('5', '3', 'friend'),
                                         ('3', '5', 'friend'),
                                         ('4', '5', 'follows'),
                                        ('98', '99', 'friend'),
                                        ('99', '98', 'friend')],
                                        ['src', 'dst', 'type'])
          g = GraphFrame(vertices, edges)
          ## Take a look at the DataFrames
          g.vertices.show()
          g.edges.show()
          ## Check the number of edges of each vertex
          g.degrees.show()

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?