R 개발자를 위한 Azure Databricks
이 섹션에서는 R 언어를 사용하여 Azure Databricks에서 Notebooks 및 작업을 개발하는 방법에 대한 가이드를 제공합니다.
시작하기 위한 기본 워크플로는 다음과 같습니다.
- 코드 가져오기: 파일 또는 Git 리포지토리에서 사용자 고유의 코드를 가져오거나 아래에 나열된 자습서를 사용해 보세요. Databricks는 대화형 Azure Databricks Notebook을 사용하여 학습하는 것이 좋습니다.
- 클러스터에서 코드 실행: 사용자 고유의 클러스터를 만들거나 공유 클러스터를 사용할 수 있는 권한이 있는지 확인합니다. Notebook을 클러스터에 연결하고 Notebook을 실행합니다.
이 외에도 더 구체적인 항목으로 분기할 수 있습니다.
- Apache Spark를 사용하여 더 큰 데이터 세트 작업
- 시각화 추가
- 작업으로 워크로드 자동화
- 기계 학습을 사용하여 데이터 분석
- R 개발자 도구 사용
자습서
다음 자습서에서는 일반적인 워크플로에 대해 알아보기 위한 예제 코드 및 Notebook을 제공합니다. Notebook 예제를 작업 영역으로 가져오는 방법에 대한 지침은 Notebook 가져오기를 참조하세요.
참조
다음 하위 섹션에서는 R을 사용하여 Azure Databricks에서 개발을 시작하는 데 도움이 되는 주요 기능과 팁을 나열합니다.
Azure Databricks는 Apache Spark 에 R 인터페이스인 SparkR 및 sparklyr를 제공하는 두 개의 API를 지원합니다.
SparkR
이러한 문서에서는 SparkR에 대한 소개 및 참조를 제공합니다. SparkR은 분산 데이터 프레임 구현을 제공하는 Apache Spark에 대한 R 인터페이스입니다. SparkR은 선택, 필터링 및 집계(R 데이터 프레임과 유사)와 같은 작업을 지원하지만 큰 데이터 세트에서 지원합니다.
sparklyr
이 문서에서는 sparklyr에 대해 소개합니다. sparklyr는 dplyr, broom
및 DBI와 유사한 기능을 제공하는 Apache Spark에 대한 R 인터페이스입니다.
SparkR 및 sparklyr 비교
이 문서에서는 SparkR과 sparklyr 간의 주요 유사성 및 차이점에 대해 설명합니다.
SparkR 및 sparklyr를 사용하여 DataFrame 및 테이블 작업
이 문서에서는 R, SparkR, sparklyr, dplyr를 사용하여 Azure Databricks에서 R data.frames, Spark DataFrames, Spark 테이블을 사용하는 방법을 설명합니다.
Notebooks 및 Databricks Git 폴더를 사용하여 코드 관리
Azure Databricks Notebooks는 R을 지원합니다. 이러한 Notebooks는 Jupyter와 유사한 기능을 제공하지만 빅 데이터를 사용하는 기본 제공 시각화, 디버깅 및 성능 모니터링을 위한 Apache Spark 통합 및 기계 학습 실험을 추적하기 위한 MLflow 통합과 같은 추가 기능을 제공합니다. notebook을 가져와 시작합니다. 클러스터에 대한 액세스 권한이 있으면 클러스터에 Notebook을 연결하고 Notebook을 실행할 수 있습니다.
Azure Databricks Git 폴더를 사용하면 노트북 및 기타 파일을 Git 리포지토리와 동기화할 수 있습니다. Azure Databricks Git 폴더는 코드 버전 관리 및 협업에 도움이 되며, 전체 코드 리포지토리를 Azure Databricks로 가져오고, 이전 Notebook 버전을 보고, IDE 개발과 통합하는 작업을 간소화할 수 있습니다. 원격 Git 리포지토리를 복제하여 시작합니다. 그런 다음 리포지토리 복제본으로 Notebook을 열거나 생성하고, Notebook을 클러스터에 연결하고, Notebook을 실행할 수 있습니다.
클러스터
Azure Databricks 컴퓨팅은 단일 노드와 대규모 클러스터 모두에 대한 컴퓨팅 관리를 제공합니다. 필요에 따라 클러스터 하드웨어 및 라이브러리를 사용자 지정할 수 있습니다. 데이터 과학자는 일반적으로 클러스터를 만들거나 기존 공유 클러스터를 사용하여 작업을 시작합니다. 클러스터에 대한 액세스 권한이 있으면 클러스터에 Notebook을 연결하거나 클러스터에서 작업을 실행할 수 있습니다.
- 단일 노드만 필요한 소규모 워크로드의 경우 데이터 과학자는 비용 절감을 위해 단일 노드 컴퓨팅을 사용할 수 있습니다.
- 자세한 팁은 컴퓨팅 구성 권장 사항을 참조하세요.
- 관리자는 클러스터 정책을 설정하여 클러스터 생성을 간소화하고 안내할 수 있습니다.
단일 노드 R 및 분산 R
Azure Databricks 클러스터는 Apache Spark 드라이버 노드와 하나 이상의 Spark 작업자자(실행기라고도 함) 노드로 구성됩니다. 드라이버 노드는 연결된 Notebook 상태를 유지하고, SparkContext
를 유지 관리하고, Notebook 및 라이브러리 명령을 해석하고, Spark 실행기와 조정하는 Spark 마스터를 실행합니다. 작업자 노드는 작업자 노드당 하나의 Spark 실행기인 Spark 실행기를 실행합니다.
단일 노드 클러스터에는 하나의 드라이버 노드가 있고 작업자 노드는 없으며 Spark는 Azure Databricks에서 관리하는 테이블에 대한 액세스를 지원하기 위해 로컬 모드로 실행됩니다. 단일 노드 클러스터는 RStudio, Notebooks, 라이브러리를 지원하며 빅 데이터 또는 병렬 처리를 위해 Spark에 의존하지 않는 R 프로젝트에 유용합니다. 단일 노드 또는 다중 노드 컴퓨팅을 참조하세요.
R이 처리하는 데 어려움을 겪는 데이터 크기(많은 기가바이트 또는 페타바이트)의 경우 다중 노드 또는 분산 클러스터를 대신 사용해야 합니다. 분산 클러스터에는 하나의 드라이버 노드와 하나 이상의 작업자 노드가 있습니다. 분산 클러스터는 RStudio, Notebook 및 라이브러리뿐만 아니라 SparkContext
를 통해 분산 클러스터를 사용하도록 고유하게 설계된 SparkR 및 sparkly와 같은 R 패키지도 지원합니다. 이러한 패키지는 작업자 노드에서 다양한 Spark 작업 및 명령을 병렬로 할당하고 실행할 수 있는 친숙한 SQL 및 DataFrame API를 제공합니다. sparklyr 및 SparkR에 대한 자세한 내용은 SparkR 및 sparklyr 비교를 참조하세요.
작업자 노드 간에 관련 작업을 배포하는 데 특히 활용하는 일부 SparkR 및 sparklyr 함수는 다음과 같습니다.
- sparklyr::spark_apply: 클러스터 내에서 임의 R 코드를 대규모로 실행합니다. 이는 R에서만 사용할 수 있는 기능 또는 Apache Spark나 다른 Spark 패키지에서 사용할 수 없는 R 패키지를 사용하는 데 특히 유용합니다.
- SparkR::d apply: 지정된 함수를
SparkDataFrame
의 각 파티션에 적용합니다. - SparkR::d applyCollect: 지정된 함수를
SparkDataFrame
의 각 파티션에 적용하고 결과를 R에data.frame
으로 다시 수집합니다. - SparkR::gapply: 지정된 열을 사용하여
SparkDataFrame
을 그룹화하고 지정된 R 함수를 각 그룹에 적용합니다. - SparkR::gapplyCollect: 지정된 열을 사용하여
SparkDataFrame
을 그룹화하고, 지정된 R 함수를 각 그룹에 적용하고, 결과를 R에data.frame
으로 다시 수집합니다. - SparkR::spark.lapply: 요소 목록에서 지정된 함수를 실행하여 Spark를 사용하여 계산을 배포합니다.
예를 들어 Notebook Distributed R: Spark의 사용자 정의 함수를 참조하세요.
Databricks Container Services
Databricks Container Services를 사용하면 클러스터를 만들 때 Docker 이미지를 지정할 수 있습니다. Databricks는 R 지원으로 Databricks Container Services 클러스터를 시작하는 예제로 Docker Hub의 databricksruntime/rbase 기본 이미지를 제공합니다. 이 기본 이미지를 생성하는 데 사용되는 Dockerfile도 참조하세요.
라이브러리
Azure Databricks 클러스터는 Apache Spark, Delta Lake 등을 비롯한 많은 인기 있는 라이브러리를 기본 제공하는 Databricks 런타임을 사용합니다. Notebooks 및 작업과 함께 사용할 추가 타사 또는 사용자 지정 R 패키지를 라이브러리에 설치할 수도 있습니다.
Databricks 런타임 릴리스 정보 버전 및 호환성의 기본 라이브러리로 시작합니다. 기계 학습 워크로드에 Machine Learning용 Databricks Runtime을 사용합니다. 사전 설치된 라이브러리의 전체 목록은 Databricks Runtime 릴리스 정보 버전 및 호환성에서 대상 Databricks Runtime에 대한 '설치된 R 라이브러리' 섹션을 참조하세요.
CRAN 또는 기타 리포지토리의 라이브러리를 사용하여 Notebook 또는 작업 환경을 수정할 수 있는 Notebook 범위 R 라이브러리를 사용하여 환경을 사용자 지정할 수 있습니다. 이렇게 하려면 utils
에서 친숙한 install.packages 함수를 사용하면 됩니다. 다음 예제에서는 기본 CRAN 리포지토리에서 Arrow R 패키지를 설치합니다.
install.packages("arrow")
Databricks Runtime에 포함된 버전보다 이전 버전이 필요한 경우 Notebook을 사용하여 devtools
에서 install_version 함수를 실행할 수 있습니다. 다음 예제에서는 CRAN에서 dplyr 버전 0.7.4를 설치합니다.
require(devtools)
install_version(
package = "dplyr",
version = "0.7.4",
repos = "http://cran.r-project.org"
)
이러한 방식으로 설치된 패키지는 클러스터 전체에서 사용할 수 있습니다. 이를 설치하는 사용자로 범위가 지정됩니다. 이렇게 하면 패키지 충돌을 만들지 않고 동일한 컴퓨팅에 동일한 패키지의 여러 버전을 설치할 수 있습니다.
필요에 따라 CRAN 등에서 다른 라이브러리를 클러스터 라이브러리로 설치할 수 있습니다. 이렇게 하려면 클러스터 사용자 인터페이스에서 라이브러리 > 새로 설치 > CRAN을 클릭하고 라이브러리의 이름을 지정합니다. 이 방법은 SparkR 또는 sparklyr을 사용하여 사용자 정의 함수를 호출하려는 경우에 특히 중요합니다.
자세한 내용은 라이브러리를 참조하세요.
라이브러리에 사용자 지정 패키지를 설치하려면 다음을 수행합니다.
명령줄에서 또는 RStudio를 사용하여 사용자 지정 패키지를 빌드합니다.
개발 머신의 사용자 지정 패키지 파일을 Azure Databricks 작업 영역으로 복사합니다. 옵션은 라이브러리를 참조하세요.
install.packages
를 실행하여 라이브러리에 사용자 지정 패키지를 설치합니다.예를 들어 작업 영역의 Notebook에서 다음을 수행합니다.
install.packages( pkgs = "/path/to/tar/file/<custom-package>.tar.gz", type = "source", repos = NULL )
또는
%sh R CMD INSTALL /path/to/tar/file/<custom-package>.tar.gz
라이브러리에 사용자 지정 패키지를 설치한 후 라이브러리를 검색 경로에 추가한 다음, 단일 명령으로 라이브러리를 로드할 수 있습니다.
예시:
# Add the library to the search path one time.
.libPaths(c("/path/to/tar/file/", .libPaths()))
# Load the library. You do not need to add the library to the search path again.
library(<custom-package>)
클러스터의 각 노드에 사용자 지정 패키지를 라이브러리로 설치하려면 init 스크립트란 무엇인가요?를 사용해야 합니다.
시각적 개체
Azure Databricks R Notebook은 display
함수를 사용하여 다양한 유형의 시각화를 지원합니다.
작업
Azure Databricks에서 예약되거나 트리거된 Notebook 작업으로 R 워크로드를 자동화할 수 있습니다.
- UI를 통해 작업을 만드는 방법에 대한 자세한 내용은 Databricks 작업 구성 및 편집을 참조하세요.
- 작업 API를 사용하면 작업을 만들고, 편집하고, 삭제할 수 있습니다.
- Databricks CLI는 작업 API를 호출하기 위한 편리한 명령줄 인터페이스를 제공합니다.
기계 학습
Databricks는 테이블 형식 데이터에 대한 기존 ML, 컴퓨터 비전 및 자연어 처리를 위한 딥 러닝, 권장 시스템, 그래프 분석 등을 포함하여 다양한 ML(기계 학습) 워크로드를 지원합니다. Azure Databricks의 머신 러닝에 대한 일반적인 정보는 머신 러닝용 Databricks Runtime을 참조하세요.
ML 알고리즘의 경우 Machine Learning용 Databricks Runtime에 미리 설치된 라이브러리를 사용할 수 있습니다. 사용자 지정 라이브러리를 설치할 수도 있습니다.
MLOps(기계 학습 작업)의 경우 Azure Databricks는 오픈 소스 라이브러리 MLflow에 대한 관리형 서비스를 제공합니다. MLflow 추적을 사용하면 모델 개발을 기록하고 다시 사용할 수 있는 형식으로 모델을 저장할 수 있습니다. MLflow 모델 레지스트리를 사용하여 프로덕션으로 모델 승격을 관리하고 자동화할 수 있습니다. 작업 및 모델 서비스를 사용하면 모델을 일괄 처리 및 스트리밍 작업 및 REST 엔드포인트로 호스팅할 수 있습니다. 자세한 내용과 예제는 MLflow을 사용한 ML 수명 주기 관리 또는 MLflow R API 문서를 참조하세요.
R 개발자 도구
Azure Databricks Notebooks 외에도 다음 R 개발자 도구를 사용할 수 있습니다.
Databricks Connect와 함께 SparkR 및 RStudio Desktop을 사용합니다.
Databricks Connect와 함께 sparklyr 및 RStudio Desktop을 사용합니다.
R 세션 사용자 지정
Databricks Runtime 12.2 LTS 이상에서는 사이트 전체 프로필(.Rprofile
) 파일을 사용하여 R 세션을 사용자 지정할 수 있습니다. R Notebook은 시작하는 동안 파일을 R 코드로 소스화합니다. 파일을 수정하려면 R_HOME
의 값을 찾아 $R_HOME/etc/Rprofile.site
를 수정합니다. Databricks는 Azure Databricks에서 호스트된 RStudio에 대한 적절한 기능을 보장하기 위해 파일에 구성을 추가했습니다. 이를 제거하면 RStudio가 예상대로 작동하지 않을 수 있습니다.
Databricks Runtime 11.3 LTS 이하에서 환경 변수 DATABRICKS_ENABLE_RPROFILE=true
를 설정하여 이 동작을 사용하도록 설정할 수 있습니다.