자습서: Synapse 작업 영역을 통해 IntelliJ를 사용하여 Apache Spark 애플리케이션 만들기
이 자습서에서는 Azure Toolkit for IntelliJ 플러그 인을 사용하여 Scala로 작성되는 Apache Spark 애플리케이션을 개발한 다음, IntelliJ IDE(통합 개발 환경)에서 직접 서버리스 Apache Spark 풀에 제출하는 방법을 보여줍니다. 다음과 같은 몇 가지 방식으로 플러그 인을 사용할 수 있습니다.
- Spark 풀에서 Scala Spark 애플리케이션을 개발하여 제출합니다.
- Spark 풀 리소스에 액세스합니다.
- Scala Spark 애플리케이션을 로컬로 개발 및 실행합니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- Azure Toolkit for IntelliJ 플러그 인 사용
- Apache Spark 애플리케이션 개발
- Spark 풀에 애플리케이션 제출
필수 조건
Azure 도구 키트 플러그 인 3.27.0-2019.2 – IntelliJ 플러그 인 리포지토리에서 설치
Scala 플러그 인 – IntelliJ 플러그 인 리포지토리에서 설치
다음 사전 요구 사항은 Windows 사용자에게만 적용됩니다.
Windows 컴퓨터에서 로컬 Spark Scala 애플리케이션을 실행하는 동안 SPARK-2356에서 설명한 예외가 발생할 수 있습니다. 이 예외는 Windows에 WinUtils.exe가 없기 때문에 발생합니다. 이 오류를 해결하려면 WinUtils 실행 파일을 C:\WinUtils\bin 같은 위치에 저장합니다. 그런 다음 HADOOP_HOME 환경 변수를 추가하고 이 변수 값을 C:\WinUtils로 설정합니다.
Spark 풀용 Spark Scala 애플리케이션 만들기
IntelliJ IDEA를 시작하고 새 프로젝트 만들기를 선택하여 새 프로젝트 창을 엽니다.
왼쪽 창에서 Apache Spark/HDInsight를 선택합니다.
주 창에서 샘플이 포함된 Spark 프로젝트(Scala)를 선택합니다.
빌드 도구 드롭다운 목록에서 다음 형식 중 하나를 선택합니다.
- Maven: Scala 프로젝트 만들기 마법사 지원의 경우
- SBT - 종속성 관리 및 Scala 프로젝트용 빌드의 경우
다음을 선택합니다.
새 프로젝트 창에서 다음 정보를 제공합니다.
속성 설명 프로젝트 이름 이름을 입력합니다. 이 자습서에서는 myApp
를 사용합니다.프로젝트 위치 프로젝트를 저장할 위치를 입력합니다. 프로젝트 SDK IDEA를 처음 사용하는 경우에는 비어 있을 수 있습니다. 새로 만들기...를 만들기 JDK로 이동합니다. Spark 버전 만들기 마법사는 Spark SDK 및 Scala SDK에 대해 적합한 버전을 통합합니다. 여기에서 필요한 Spark 버전을 선택할 수 있습니다. 마침을 선택합니다. 프로젝트를 사용할 수 있게 되기까지 몇 분 정도 걸릴 수 있습니다.
Spark 프로젝트가 자동으로 아티팩트를 만듭니다. 아티팩트를 보려면 다음 작업을 수행합니다.
a. 메뉴 모음에서 파일>프로젝트 구조...로 이동합니다.
b. 프로젝트 구조 창에서 아티팩트를 선택합니다.
c. 아티팩트를 확인한 후 취소를 선택합니다.
myApp>src>main>scala>sample>LogQuery에서 LogQuery를 찾습니다. 이 자습서에서는 LogQuery를 사용하여 실행합니다.
Spark 풀에 연결
Azure 구독에 로그인하여 Spark 풀에 연결합니다.
Azure 구독에 로그인
메뉴 모음에서 보기>도구 창>Azure 탐색기로 이동합니다.
Azure 탐색기에서 Azure 노드를 마우스 오른쪽 단추로 클릭한 다음, 로그인을 선택합니다.
Azure 로그인 대화 상자에서 디바이스 로그인과 로그인을 차례로 선택합니다.
Azure 디바이스 로그인 대화 상자에서 복사 및 열기를 선택합니다.
브라우저 인터페이스에서 코드를 붙여넣은 다음, 다음을 선택합니다.
Azure 자격 증명을 입력한 다음, 브라우저를 닫습니다.
로그인하고 나면 구독 선택 대화 상자에 자격 증명과 연결된 모든 Azure 구독의 목록이 표시됩니다. 구독을 선택한 다음, 선택을 선택합니다.
Azure 탐색기에서 Synapse의 Apache Spark를 확장하여 구독에 포함된 작업 영역을 확인합니다.
Spark 풀을 보려면 작업 영역을 더 확장해야 합니다.
Spark 풀에서 Spark Scala 애플리케이션 원격 실행
Scala 애플리케이션을 만든 후에는 원격으로 실행할 수 있습니다.
아이콘을 선택하여 구성 실행/디버그 창을 엽니다.
구성 실행/디버그 대화 상자 창에서 + 기호를 선택한 다음, Synapse의 Apache Spark를 선택합니다.
구성 실행/디버그 창에서 다음 값을 입력한 다음, 확인을 선택합니다.
속성 값 Spark 풀 애플리케이션을 실행하려는 Spark 풀을 선택합니다. 제출할 아티팩트를 선택합니다. 기본 설정을 유지합니다. 주 클래스 이름 기본값은 선택한 파일의 기본 클래스입니다. 줄임표(...)를 선택하고 다른 클래스를 선택하여 클래스를 변경할 수 있습니다. 작업 구성 기본 키 및 값을 변경할 수 있습니다. 자세한 내용은 Apache Livy REST API를 참조하세요. 명령줄 인수 필요한 경우 기본 클래스에 대해 공백으로 구분된 인수를 입력할 수 있습니다. 참조된 Jar 및 참조된 파일 참조되는 Jar 및 파일의 경로를 입력할 수 있습니다(있는 경우). Azure 가상 파일 시스템의 파일을 찾아 볼 수도 있습니다. 여기에는 현재 ADLS Gen2 클러스터만 지원됩니다. 자세한 내용은 Apache Spark 구성 및 클러스터에 리소스를 업로드하는 방법을 참조하세요. 작업 업로드 스토리지 추가 옵션을 표시하려면 확장합니다. 저장소 유형 드롭다운 목록에서 Azure Blob을 사용하여 업로드 또는 클러스터 기본 스토리지 계정을 사용하여 업로드를 선택합니다. 스토리지 계정 스토리지 계정을 입력합니다. 스토리지 키 스토리지 키를 입력합니다. 스토리지 컨테이너 스토리지 계정 및 스토리지 키를 입력했으면 드롭다운 목록에서 스토리지 컨테이너를 선택합니다. SparkJobRun 아이콘을 선택하여 선택한 Spark 풀에 프로젝트를 제출합니다. 클러스터의 원격 Spark 작업 탭 아래쪽에는 작업 실행 진행률이 표시됩니다. 빨간색 단추를 선택하여 애플리케이션을 중지할 수 있습니다.
로컬로 Apache Spark 애플리케이션 실행/디버그
아래 지침에 따라 Apache Spark 작업의 로컬 실행 및 로컬 디버그를 설정할 수 있습니다.
시나리오 1: 로컬 실행 수행
구성 실행/디버그 대화 상자에서 더하기 기호(+)를 선택합니다. Synapse의 Apache Spark 옵션을 선택합니다. 저장할 이름, 주 클래스 이름을 입력합니다.
- 환경 변수 및 WinUtils.exe 위치는 windows 사용자에게만 적용됩니다.
- 환경 변수: 이전에 시스템 환경 변수를 설정했고 수동으로 추가할 필요가 없는 경우 자동으로 시스템 환경 변수를 검색할 수 있습니다.
- WinUtils.exe 위치: 오른쪽에 있는 폴더 아이콘을 선택하여 WinUtils 위치를 지정할 수 있습니다.
그런 다음, 로컬 재생 단추를 선택합니다.
로컬 실행이 완료되고 스크립트에 출력이 포함되어 있으면 data>default에서 출력 파일을 확인할 수 있습니다.
시나리오 2: 로컬 디버깅 수행
LogQuery 스크립트를 열고 중단점을 설정합니다.
로컬 디버그 아이콘을 선택하여 로컬 디버깅을 수행합니다.
Synapse 작업 영역 액세스 및 관리
Azure Toolkit for IntelliJ 내에서 Azure 탐색기를 사용하여 여러 가지 작업을 수행할 수 있습니다. 메뉴 모음에서 보기>도구 창>Azure 탐색기로 이동합니다.
작업 영역 시작
Azure 탐색기에서 Synapse의 Apache Spark로 이동하여 확장합니다.
작업 영역을 마우스 오른쪽 단추로 클릭한 다음, 작업 영역 시작을 선택하면 웹 사이트가 열립니다.
Spark 콘솔
Spark 로컬 콘솔(Scala)을 실행하거나 Spark Livy 대화형 세션 콘솔(Scala)을 실행할 수 있습니다.
Spark 로컬 콘솔(Scala)
WINUTILS.EXE 필수 구성 요소를 충족하는지 확인합니다.
메뉴 모음에서 실행>구성 편집...으로 이동합니다.
구성 실행/디버그 창의 왼쪽 창에서 Synapse의 Apache Spark>[Synapse의 Spark] myApp으로 이동합니다.
주 창에서 로컬 실행 탭을 선택합니다.
다음 값을 입력하고 확인을 선택합니다.
속성 값 환경 변수 HADOOP_HOME의 값이 올바른지 확인합니다. WINUTILS.exe 위치 경로가 올바른지 확인합니다. 프로젝트에서 myApp>src>main>scala>myApp으로 이동합니다.
메뉴 모음에서 도구>Spark 콘솔>Spark 로컬 콘솔(Scala) 실행으로 이동합니다.
그러면 종속성을 자동으로 수정할 것인지 묻는 두 개의 대화 상자가 표시될 수 있습니다. 자동으로 수정하려면 자동 수정을 선택합니다.
콘솔은 아래 그림과 같이 표시됩니다. 콘솔 창에서
sc.appName
을 입력한 다음, Ctrl+Enter를 누릅니다. 결과가 표시됩니다. 빨간색 단추를 선택하여 로컬 콘솔을 중지할 수 있습니다.
Spark Livy 대화형 세션 콘솔(Scala)
IntelliJ 2018.2 및 2018.3에서만 지원됩니다.
메뉴 모음에서 실행>구성 편집...으로 이동합니다.
구성 실행/디버그 창의 왼쪽 창에서 Synapse의 Apache Spark>[Synapse의 Spark] myApp으로 이동합니다.
주 창에서 클러스터에서 원격으로 실행 탭을 선택합니다.
다음 값을 입력하고 확인을 선택합니다.
속성 값 주 클래스 이름 주 클래스 이름을 선택합니다. Spark 풀 애플리케이션을 실행하려는 Spark 풀을 선택합니다. 프로젝트에서 myApp>src>main>scala>myApp으로 이동합니다.
메뉴 모음에서 도구>Spark 콘솔>Spark Livy 대화형 세션 콘솔(Scala)로 이동합니다.
콘솔은 아래 그림과 같이 표시됩니다. 콘솔 창에서
sc.appName
을 입력한 다음, Ctrl+Enter를 누릅니다. 결과가 표시됩니다. 빨간색 단추를 선택하여 로컬 콘솔을 중지할 수 있습니다.
Spark 콘솔로 선택 내용 보내기
로컬 콘솔 또는 Livy Interactive Session Console(Scala)에 코드를 전송하여 스크립트 결과를 볼 수 있습니다. 이렇게 하려면 Scala 파일에서 일부 코드를 강조 표시한 다음, 마우스 오른쪽 단추로 Spark 콘솔로 선택 내용 보내기를 클릭합니다. 선택한 코드가 콘솔로 전송된 후 실행됩니다. 결과는 콘솔의 코드 뒤에 표시됩니다. 콘솔에서 기존 오류를 확인합니다.