다음을 통해 공유


Livy API를 사용하여 사용자 자격 증명으로 Spark 세션 작업 제출 및 실행

적용 대상:✅ Microsoft Fabric의 데이터 엔지니어링 및 데이터 과학

Lakehouse를 만들어 패브릭 데이터 엔지니어링용 Livy API를 시작합니다. Microsoft Entra 토큰으로 인증; Livy API 엔드포인트를 검색합니다. 원격 클라이언트에서 Fabric Spark 컴퓨팅으로 일괄 처리 또는 세션 작업을 제출합니다. 및 결과를 모니터링합니다.

중요합니다

이 기능은 프리뷰 상태입니다.

필수 조건

REST API 클라이언트 선택

다양한 프로그래밍 언어 또는 GUI 클라이언트를 사용하여 REST API 엔드포인트와 상호 작용할 수 있습니다. 이 글에서는 Visual Studio Code사용합니다. Python용 Jupyter Notebook, PySparkMSAL(Microsoft 인증 라이브러리)을 사용하여 Visual Studio Code를 구성해야 합니다.

Entra SPN 토큰을 사용하여 Livy API 요청에 권한을 부여하는 방법

Livy API를 포함한 패브릭 API를 사용하려면, 먼저 Microsoft Entra 애플리케이션을 만들고 비밀 키를 생성한 뒤, 코드에서 해당 비밀 키를 사용해야 합니다. Fabric에 대한 API 호출을 수행하려면 애플리케이션을 등록하고 적절하게 구성해야 합니다. 자세한 내용은 Microsoft Entra ID에서 애플리케이션 자격 증명 추가 및 관리를 참조하세요.

앱 등록을 만든 후 클라이언트 암호를 만듭니다.

Entra 앱 등록 및 클라이언트 암호 추가를 보여 주는 스크린샷

  1. 클라이언트 암호를 만들 때 값을 복사해야 합니다. 코드의 뒷부분에서 이 값이 필요하며 비밀을 다시 볼 수 없습니다. 또한 코드의 비밀 외에도 애플리케이션(클라이언트) ID와 디렉터리(테넌트 ID)가 필요합니다.

  2. 다음으로 작업 영역에 클라이언트 비밀을 추가해야 합니다.

    액세스 옵션 관리 Lakehouse 설정을 보여 주는 스크린샷.

  3. Entra 클라이언트 암호를 검색하고 해당 비밀을 작업 영역에 추가하고 새로 추가된 비밀에 관리자 권한이 있는지 확인합니다.

    작업 영역에 새 SPN 서비스 주체를 추가하는 것을 보여 주는 스크린샷

Entra 앱 토큰을 사용하여 Livy API 요청에 권한을 부여하는 방법

Livy API를 포함한 패브릭 API를 사용하려면 먼저 Microsoft Entra 애플리케이션을 만들고 토큰을 가져와야 합니다. Fabric에 대한 API 호출을 수행하려면 애플리케이션을 등록하고 적절하게 구성해야 합니다. 자세한 내용은 Microsoft ID 플랫폼을 사용하여 애플리케이션 등록을 참조하세요.

Livy 작업을 실행하는 데 필요한 많은 Microsoft Entra 범위 권한이 있습니다. 이 예제에서는 간단한 Spark 코드 + 스토리지 액세스 + SQL을 사용합니다.

  • Code.AccessAzureDataExplorer.All

  • 코드.AccessAzureDataLake.전체

  • 코드.액세스Azure키보관소.전체

  • Code.AccessFabric.All

  • 코드.액세스저장소.모두

  • 아이템.읽기쓰기.전체

  • 레이크하우스.실행.전체

  • 작업 공간. 읽기쓰기. 전체

    Microsoft Entra 관리 센터의 Livy API 권한을 보여 주는 스크린샷

참고

공개 미리 보기 중에 몇 가지 세부적인 범위를 추가하면 이러한 범위가 변경 될 수 있습니다. 이러한 범위 변경이 발생하면 Livy 앱이 중단되었을 수 있습니다. 이 목록은 추가 범위로 업데이트되므로 확인합니다.

일부 고객은 이전 목록보다 더 세부적인 권한을 원합니다. Item.ReadWrite.All을 제거하고 이러한 보다 세부적인 범위 권한으로 바꿀 수 있습니다.

  • Code.AccessAzureDataExplorer.All
  • 코드.AccessAzureDataLake.전체
  • 코드.액세스Azure키보관소.전체
  • Code.AccessFabric.All
  • 코드.액세스저장소.모두
  • 레이크하우스.실행.전체
  • Lakehouse.ReadWrite.All
  • 작업 공간. 읽기쓰기. 전체
  • Notebook.ReadWrite.All (노트북 읽기 및 쓰기 권한 전체)
  • SparkJobDefinition.ReadWrite.All
  • MLModel.ReadWrite.All
  • MLExperiment.ReadWrite.All
  • 데이터셋.읽기쓰기.전체

애플리케이션을 등록할 때 애플리케이션(클라이언트) ID와 디렉터리(테넌트) ID가 모두 필요합니다.

Microsoft Entra 관리 센터의 Livy API 앱 개요를 보여 주는 스크린샷

Livy API를 호출하는 인증된 사용자는 API 및 데이터 원본 항목이 참가자 역할과 함께 있는 작업 영역 멤버여야 합니다. 자세한 내용은 사용자에게 작업 영역에 대한 액세스 권한 부여를 참조하세요.

Fabric Livy API 엔드포인트를 검색하는 방법

Livy 엔드포인트에 액세스하려면 Lakehouse 아티팩트가 필요합니다. Lakehouse가 만들어지면 설정 패널 내에 Livy API 엔드포인트를 배치할 수 있습니다.

Lakehouse 설정의 Livy API 엔드포인트를 보여 주는 스크린샷

Livy API의 엔드포인트는 다음 패턴을 따릅니다.

https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/

URL에는 선택한 항목에 따라 세션< 또는 배치>가 덧붙여집니다.

Livy API Swagger 파일 다운로드

Livy API의 전체 swagger 파일은 여기에서 확인할 수 있습니다.

Livy API 작업 제출

이제 Livy API 설정이 완료되었으므로 일괄 처리 또는 세션 작업을 제출하도록 선택할 수 있습니다.

패브릭 환경과 통합

기본적으로 이 Livy API 세션은 작업 영역에 대한 기본 시작 풀에 대해 실행됩니다. 또는 패브릭 환경 만들기, 구성 및 Microsoft Fabric의 환경을 사용하여 Livy API 세션에서 이러한 Spark 작업에 사용하는 Spark 풀을 사용자 지정할 수 있습니다.

Livy Spark 세션에서 패브릭 환경을 사용하려면 이 페이로드를 포함하도록 json을 업데이트하기만 하면됩니다.

create_livy_session = requests.post(livy_base_url, headers = headers, json={
    "conf" : {
        "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
    }
)

Livy Spark 일괄 처리 세션에서 패브릭 환경을 사용하려면 아래와 같이 json 페이로드를 업데이트하기만 하면됩니다.

payload_data = {
"name":"livybatchdemo_with"+ newlakehouseName,
"file":"abfss://YourABFSPathToYourPayload.py", 
"conf": {
    "spark.targetLakehouse": "Fabric_LakehouseID",
    "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID"\"}"  # remove this line to use starter pools instead of an environment, replace "EnvironmentID" with your environment ID
    }
}

요청 기록을 모니터링하는 방법

모니터링 허브를 사용하여 이전 Livy API 제출을 확인하고 제출 오류를 디버그할 수 있습니다.

모니터링 허브의 이전 Livy API 제출을 보여 주는 화면 캡처