Azure Data Factory에서 Spark 작업을 사용하여 클라우드의 데이터 변환
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
이 자습서에서는 Azure Portal을 사용하여 Azure Data Factory 파이프라인을 만듭니다. 이 파이프라인은 Spark 활동 및 주문형 HDInsight 연결된 서비스를 사용하여 데이터를 변환합니다.
이 자습서에서 수행하는 단계는 다음과 같습니다.
- 데이터 팩터리를 만듭니다.
- Spark 활동을 사용하는 파이프라인을 만듭니다.
- 파이프라인 실행 트리거
- 파이프라인 실행을 모니터링합니다.
Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
사전 요구 사항
참고 항목
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
- Azure 스토리지 계정. Python 스크립트와 입력 파일을 만들고 Azure Storage에 업로드합니다. Spark 프로그램의 출력은 이 스토리지 계정에 저장됩니다. 주문형 Spark 클러스터는 기본 스토리지와 동일한 스토리지 계정을 사용합니다.
참고 항목
HdInsight는 표준 계층을 포함하는 범용 스토리지 계정만 지원합니다. 계정이 프리미엄 또는 BLOB 전용 스토리지 계정인지 확인합니다.
- Azure PowerShell. Azure PowerShell을 설치 및 구성하는 방법의 지침을 따르세요.
Blob Storage 계정에 Python 스크립트 업로드
다음 내용이 포함된 WordCount_Spark.py라는 Python 파일을 만듭니다.
import sys from operator import add from pyspark.sql import SparkSession def main(): spark = SparkSession\ .builder\ .appName("PythonWordCount")\ .getOrCreate() lines = spark.read.text("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/inputfiles/minecraftstory.txt").rdd.map(lambda r: r[0]) counts = lines.flatMap(lambda x: x.split(' ')) \ .map(lambda x: (x, 1)) \ .reduceByKey(add) counts.saveAsTextFile("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/outputfiles/wordcount") spark.stop() if __name__ == "__main__": main()
<storageAccountName>을 Azure Storage 계정 이름으로 바꿉니다. 그런 다음 파일을 저장합니다.
Azure Blob Storage에 아직 없는 경우 adftutorial이라는 컨테이너를 만듭니다.
spark라는 폴더를 만듭니다.
spark 폴더 아래에 script라는 하위 폴더를 만듭니다.
script 하위 폴더에 WordCount_Spark.py 파일을 업로드합니다.
입력 파일 업로드
- 일부 텍스트가 포함된 minecraftstory.txt라는 파일을 만듭니다. Spark 프로그램은 이 텍스트의 단어 수를 계산합니다.
- spark 폴더에 inputfiles라는 하위 폴더를 만듭니다.
- inputfiles 하위 폴더에 minecraftstory.txt 파일을 업로드합니다.
데이터 팩터리 만들기
사용할 데이터 팩터리가 아직 없는 경우 빠른 시작: Azure Portal을 사용하여 데이터 팩터리 만들기문서의 단계를 수행합니다.
연결된 서비스 생성
이 섹션에서는 두 개의 연결된 서비스를 작성합니다.
- Azure Storage 계정을 데이터 팩터리에 연결하는 Azure Storage 연결된 서비스. 이 스토리지는 주문형 HDInsight 클러스터에서 사용됩니다. 실행될 Spark 스크립트도 포함되어 있습니다.
- 주문형 HDInsight 연결된 서비스. Azure Data Factory는 HDInsight 클러스터를 자동으로 만들고 Spark 프로그램을 실행합니다. 그런 다음 클러스터가 미리 구성된 시간 동안 유휴 상태를 유지하면 HDInsight 클러스터를 삭제합니다.
Azure Storage 연결된 서비스 만들기
홈페이지에서 왼쪽 패널의 관리 탭으로 전환합니다.
창의 아래쪽에서 연결, + 새로 만들기를 차례로 클릭합니다.
새 연결된 서비스 창에서 데이터 저장소>Azure Blob Storage를 선택한 다음, 계속을 선택합니다.
스토리지 계정 이름의 목록에서 이름을 선택한 후 저장을 선택합니다.
주문형 HDInsight 연결된 서비스 만들기
+ 새로 만들기 단추를 다시 선택하여 또 하나의 연결된 서비스를 만듭니다.
새 연결된 서비스 창에서 Compute>Azure HDInsight를 선택한 후 계속을 선택합니다.
새 연결된 서비스 창에서 다음 단계를 완료합니다.
a. 이름에 AzureHDInsightLinkedService를 입력합니다.
b. 유형에 주문형 HDInsight가 선택되었는지 확인합니다.
c. Azure Storage 연결 서비스에 대해 AzureBlobStorage1을 선택합니다. 이 연결된 서비스는 앞에서 먼저 만들었습니다. 다른 이름을 사용한 경우 여기에 올바른 이름을 지정합니다.
d. 클러스터 유형에 spark를 선택합니다.
e. 서비스 주체 ID에는 HDInsight 클러스터를 만들 수 있는 권한이 있는 서비스 주체의 ID를 입력합니다.
이 서비스 주체는 클러스터를 만든 구독 또는 리소스 그룹의 참가자 역할의 구성원이어야 합니다. 자세한 내용은 Microsoft Entra 애플리케이션 및 서비스 주체 만들기를 참조하세요. 서비스 주체 ID는 ‘애플리케이션 ID’와 동일하고, 서비스 주체 키는 ‘클라이언트 비밀’ 값과 동일합니다.
f. 서비스 주체 키에 키를 입력합니다.
g. 리소스 그룹에 데이터 팩터리를 만들 때 사용한 것과 동일한 리소스 그룹을 선택합니다. Spark 클러스터가 이 리소스 그룹에 만들어집니다.
h. OS 유형을 펼칩니다.
i. 클러스터 사용자 이름에 대한 이름을 입력합니다.
j. 사용자에 대한 클러스터 암호를 입력합니다.
k. 마침을 선택합니다.
참고 항목
Azure HDInsight는 지원하는 각 Azure 지역에서 사용할 수 있는 총 코어 수를 제한합니다. 주문형 HDInsight 연결된 서비스의 경우 HDInsight 클러스터는 기본 스토리지로 사용되는 Azure Storage와 동일한 위치에 만들어집니다. 클러스터를 성공적으로 만드는 데 충분한 코어 할당량이 있는지 확인합니다. 자세한 내용은 Hadoop, Spark, Kafka 등으로 HDInsight에서 클러스터 설정을 참조하세요.
파이프라인을 만듭니다.
+(더하기) 단추를 선택한 다음, 메뉴에서 파이프라인을 선택합니다.
활동 도구 상자에서 HDInsight를 확장합니다. 활동 도구 상자에서 Spark 활동을 파이프라인 디자이너 화면으로 끌어서 놓습니다.
아래쪽의 Spark 활동 창에 대한 속성에서 다음 단계를 완료합니다.
a. HDI 클러스터 탭으로 전환합니다.
b. 이전 절차에서 만든 AzureHDInsightLinkedService를 선택합니다.
스크립트/Jar 탭으로 전환하고 다음 단계를 완료합니다.
a. 작업 연결 서비스에 AzureBlobStorage1을 선택합니다.
b. 스토리지 찾아보기를 선택합니다.
c. adftutorial/spark/script 폴더로 이동한 후 WordCount_Spark.py를 선택한 후 마침을 선택합니다.
파이프라인에 대한 유효성을 검사하려면 도구 모음에서 유효성 검사 단추를 선택합니다. >>(오른쪽 화살표) 단추를 선택하여 유효성 검사 창을 닫습니다.
모두 게시를 선택합니다. Data Factory UI는 엔터티(연결된 서비스 및 파이프라인)를 Azure Data Factory 서비스에 게시합니다.
파이프라인 실행 트리거
도구 모음에서 트리거 추가를 선택한 다음, 지금 트리거를 선택합니다.
파이프라인 실행 모니터링
모니터 탭으로 전환합니다. 파이프라인 실행이 표시되는지 확인합니다. Spark 클러스터를 만드는 데 약 20분이 걸립니다.
주기적으로 새로 고침을 선택하여 파이프라인 실행 상태를 확인합니다.
파이프라인 실행과 연결된 활동 실행을 보려면 작업 열에서 활동 실행 보기를 선택합니다.
위쪽의 모든 파이프라인 실행 링크를 선택하여 파이프라인 실행 보기로 다시 전환할 수 있습니다.
출력 확인
출력 파일이 adftutorial 컨테이너의 spark/otuputfiles/wordcount 폴더에 만들어졌는지 확인합니다.
파일에는 입력 텍스트 파일의 각 단어 및 해당 단어가 파일에 나타난 횟수가 있어야 합니다. 예시:
(u'This', 1)
(u'a', 1)
(u'is', 1)
(u'test', 1)
(u'file', 1)
관련 콘텐츠
이 샘플의 파이프라인에서 Spark 활동 및 주문형 HDInsight 연결된 서비스를 사용하여 데이터를 변환합니다. 다음 방법에 대해 알아보았습니다.
- 데이터 팩터리를 만듭니다.
- Spark 활동을 사용하는 파이프라인을 만듭니다.
- 파이프라인 실행 트리거
- 파이프라인 실행을 모니터링합니다.
가상 네트워크에 있는 Azure HDInsight 클러스터에서 Hive 스크립트를 실행하여 데이터를 변환하는 방법을 알아보려면 다음 자습서로 진행하세요.