Azure Data Factory 및 Synapse Analytics에서 Spark 작업을 사용하여 데이터 변환

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

데이터 팩터리 및 Synapse 파이프라인에서의 Spark 작업은 사용자 고유 또는 주문형 HDInsight 클러스터에서 Spark 프로그램을 실행합니다. 이 문서는 데이터 변환 및 지원되는 변환 활동의 일반적인 개요를 표시하는 데이터 변환 활동 문서에서 작성합니다. 주문형 Spark 연결 서비스를 사용하면 서비스에서는 적시에 데이터를 처리할 수 있도록 자동으로 Spark 클러스터를 만든 다음, 처리가 완료되면 클러스터를 삭제합니다.

UI를 사용하여 파이프라인에 Spark 작업 추가

파이프라인에 Spark 작업을 사용하려면 다음 단계를 완료합니다.

  1. 파이프라인 작업 창에서 Spark를 검색하고 Spark 작업을 파이프라인 캔버스로 끕니다.

  2. 아직 선택하지 않은 경우 캔버스에서 새 Spark 작업을 선택합니다.

  3. HDI 클러스터 탭을 선택하여 Spark 작업을 실행하는 데 사용할 HDInsight 클러스터에 연결된 새 서비스를 선택하거나 만듭니다.

    Shows the UI for a Spark activity.

  4. 스크립트 / Jar 탭을 선택하여 스크립트를 호스트할 Azure Storage 계정에 대한 새 작업 연결 서비스를 선택하거나 만듭니다. 실행할 파일의 경로를 지정합니다. 프록시 사용자, 디버깅 구성, 인수 및 Spark 구성 매개 변수를 포함한 고급 세부 정보를 구성하여 스크립트에 전달할 수도 있습니다.

    Shows the UI for the Script / Jar tab for a Spark activity.

Spark 활동 속성

Spark 작업의 샘플 JSON 정의는 다음과 같습니다.

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

다음 표에서는 JSON 정의에 사용하는 JSON 속성을 설명합니다.

속성 설명 필수
name 파이프라인의 작업 이름입니다.
description 작업이 어떤 일을 수행하는지 설명하는 텍스트입니다. 아니요
type Spark 작업의 경우 작업 유형은 HDInsightSpark입니다.
linkedServiceName Spark 프로그램이 실행되는 HDInsight Spark 연결된 서비스의 이름입니다. 이 연결된 서비스에 대한 자세한 내용은 컴퓨팅 연결 서비스 문서를 참조하세요.
SparkJobLinkedService Spark 작업 파일, 종속성 및 로그를 보유하는 Azure Storage 연결된 서비스입니다. 여기서는 Azure Blob StorageADLS Gen2 연결 서비스만 지원됩니다. 이 속성에 대한 값을 지정하지 않으면 HDInsight 클러스터와 연결된 스토리지가 사용됩니다. 이 속성의 값은 Azure Storage 연결된 서비스만 될 수 있습니다. 아니요
rootPath Spark 파일이 포함된 Azure Blob 컨테이너 및 폴더입니다. 파일 이름은 대/소문자를 구분합니다. 이 폴더의 구조에 대한 자세한 내용은 폴더 구조 섹션(다음 섹션)을 참조하세요.
entryFilePath Spark 코드/패키지의 루트 폴더에 대한 상대 경로입니다. 항목 파일은 Python 파일이나 .jar 파일이어야 합니다.
className 애플리케이션의 Java/Spark main 클래스 아니요
arguments Spark 프로그램에 대한 명령줄 인수 목록입니다. 아니요
proxyUser Spark 프로그램 실행을 가장하는 사용자 계정 아니요
sparkConfig Spark 구성 - 애플리케이션 속성 항목에 나열된 Spark 구성 속성의 값을 지정합니다. 아니요
getDebugInfo sparkJobLinkedService에 지정되었거나 HDInsight 클러스터에 사용된 Azure Storage에 Spark 로그 파일을 언제 복사할지 지정합니다. 허용되는 값: None, Always 또는 Failure. 기본값은 None입니다. 아니요

폴더 구조

Spark 작업은 Pig/Hive 작업보다 확장성이 뛰어납니다. Spark 작업의 경우 jar 패키지(Java CLASSPATH에 배치), Python 파일(PYTHONPATH에 배치), 기타 파일과 같은 여러 종속성을 제공할 수 있습니다.

HDInsight 연결된 서비스에서 참조하는 Azure Blob Storage에 다음 폴더 구조를 만듭니다. 그런 다음 종속 파일을 entryFilePath로 표시되는 루트 폴더의 해당 하위 폴더에 업로드합니다. 예를 들어 Python 파일은 루트 폴더의 pyFiles 하위 폴더에 업로드하고, jar 파일은 jars 하위 폴더에 업로드합니다. 런타임 시, 서비스는 Azure Blob 스토리지에서 다음 폴더 구조를 필요로 합니다.

Path 설명 필수 Type
.(root) 스토리지 연결된 서비스에서 Spark 작업의 루트 경로 폴더
<사용자 정의 > Spark 작업의 엔트리 파일을 가리키는 경로 파일
./jars 이 폴더 아래의 모든 파일이 업로드되고, 클러스터의 Java classpath에 배치됩니다. 아니요 폴더
./pyFiles 이 폴더 아래 모든 파일이 업로드되고 클러스터의 PYTHONPATH에 배치됨 아니요 폴더
./files 이 폴더 아래 모든 파일이 업로드되고 실행기 작업 디렉터리에 배치됨 아니요 폴더
./archives 이 폴더 아래 모든 파일이 압축 해제됨 아니요 폴더
./logs Spark 클러스터의 로그를 포함하는 폴더입니다. 아니요 폴더

HDInsight 연결된 서비스에서 참조하는 Azure Blob Storage에 두 개의 Spark 작업 파일이 포함된 스토리지에 대한 예는 다음과 같습니다.

SparkJob1
	main.jar
	files
		input1.txt
		input2.txt
	jars
		package1.jar
		package2.jar
	logs
	
	archives
	
	pyFiles

SparkJob2
	main.py
	pyFiles
		scrip1.py
		script2.py
	logs
	
	archives
	
	jars
	
	files
	

다른 방법으로 데이터를 변환하는 방법을 설명하는 다음 문서를 참조하세요.