sparklyr 사용

sparklyr 는 Apache Spark에 대한 R 인터페이스입니다. 익숙한 R 인터페이스를 사용하여 Spark와 상호 작용하는 메커니즘을 제공합니다. Spark 일괄 처리 작업 정의 또는 대화형 Microsoft Fabric Notebook을 통해 sparklyr를 사용할 수 있습니다.

sparklyr는 dplyr와 같은 다른 tidyverse 패키지와 함께 사용됩니다. Microsoft Fabric은 모든 런타임 릴리스와 함께 안정적인 최신 버전의 sparklyr 및 tidyverse를 배포합니다. 가져올 수 있으며 API 사용을 시작할 수 있습니다.

필수 조건

  • Microsoft Fabric 구독가져옵니다. 또는 무료 Microsoft Fabric 평가판에 등록합니다.

  • Microsoft Fabric에 로그인합니다.

  • 홈페이지 왼쪽의 환경 전환기를 사용하여 Synapse 데이터 과학 환경으로 전환합니다.

    Screenshot of the experience switcher menu, showing where to select Data Science.

  • 전자 필기장을 열거나 만듭니다. 방법을 알아보려면 Microsoft Fabric Notebook을 사용하는 방법을 참조 하세요.

  • 언어 옵션을 SparkR(R) 로 설정하여 기본 언어를 변경합니다.

  • 레이크하우스에 전자 필기장을 첨부합니다. 왼쪽에서 추가를 선택하여 기존 레이크하우스를 추가하거나 레이크하우스를 만듭니다.

Synapse Spark 클러스터에 sparklyr 커넥트

다음 연결 방법을 spark_connect() 사용하여 연결을 설정합니다 sparklyr . 기존 Spark 세션에 연결할 수 있는 새 연결 메서드를 synapse지원합니다. 세션 시작 시간을 크게 줄입니다 sparklyr . 또한 이 연결 방법을 오픈 소스d sparklyr 프로젝트에 기여했습니다. 를 사용하면 method = "synapse"동일한 세션에서 둘 다 sparklyrSparkR 사용할 수 있으며 이들 간에 데이터를 쉽게 공유할 수 있습니다.

# connect sparklyr to your spark cluster
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", method = "synapse", config = config)

sparklyr를 사용하여 데이터 읽기

새 Spark 세션에는 데이터가 없습니다. 첫 번째 단계는 Spark 세션의 메모리에 데이터를 로드하거나 Spark가 주문형 데이터에 액세스할 수 있도록 데이터 위치를 가리키는 것입니다.

# load the sparklyr package
library(sparklyr)

# copy data from R environment to the Spark session's memory
mtcars_tbl <- copy_to(sc, mtcars, "spark_mtcars", overwrite = TRUE)

head(mtcars_tbl)

ABFS 경로를 사용하여 sparklyrLakehouse 파일의 데이터를 사용할 수도 writeread 있습니다. Lakehouse를 읽고 쓰려면 먼저 세션에 추가합니다. 전자 필기장 왼쪽에서 추가를 선택하여 기존 Lakehouse를 추가하거나 Lakehouse를 만듭니다.

ABFS 경로를 찾으려면 Lakehouse의 파일 폴더를 마우스 오른쪽 단추로 클릭한 다음, ABFS 경로 복사를 선택합니다. 이 코드에서 바꿀 abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files 경로를 붙여넣습니다.

temp_csv = "abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files/data/mtcars.csv"

# write the table to your lakehouse using the ABFS path
spark_write_csv(mtcars_tbl, temp_csv, header = TRUE, mode = 'overwrite')

# read the data as CSV from lakehouse using the ABFS path
mtcarsDF <- spark_read_csv(sc, temp_csv) 
head(mtcarsDF)

sparklyr를 사용하여 데이터 조작

sparklyr 에서는 다음을 사용하여 Spark 내에서 데이터를 처리하는 여러 메서드를 제공합니다.

  • dplyr 명령을
  • SparkSQL
  • Spark의 기능 변환기

dplyr 사용

친숙한 dplyr 명령을 사용하여 Spark 내에서 데이터를 준비할 수 있습니다. 명령은 Spark 내에서 실행되므로 R과 Spark 간에 불필요한 데이터 전송이 없습니다.

Spark에서 dplyr dplyr를 사용하는 방법에 대한 추가 설명서를 보려면 데이터 조작을 클릭합니다.

# count cars by the number of cylinders the engine contains (cyl), order the results descendingly
library(dplyr)

cargroup <- group_by(mtcars_tbl, cyl) %>%
  count() %>%
  arrange(desc(n))

cargroup

sparklyr R dplyr 명령을 Spark SQL로 변환합니다. 결과 쿼리를 보려면 다음을 사용합니다 show_query().

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

SQL 사용

Spark 클러스터 내의 테이블에 대해 SQL 쿼리를 직접 실행할 수도 있습니다. 개체는 spark_connection() Spark용 DBI 인터페이스를 구현하므로 SQL을 실행하고 결과를 R 데이터 프레임으로 반환하는 데 사용할 dbGetQuery() 수 있습니다.

library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")

기능 변환기 사용

이전 두 메서드는 모두 SQL 문을 사용합니다. Spark는 SQL을 사용하지 않고도 일부 데이터 변환을 보다 편리하게 만드는 명령을 제공합니다.

예를 들어 이 ft_binarizer() 명령은 다른 열의 값이 특정 임계값을 초과하는지 나타내는 새 열의 생성을 간소화합니다.

참조 -FT통해 sparklyr 사용할 수 있는 Spark 기능 변환기의 전체 목록을 찾을 수 있습니다.

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

다음 간에 sparklyr 데이터 공유 SparkR

synapse Spark 클러스터에method = "synapse" 연결할 sparklyr 때 동일한 세션에서 둘 다 sparklyrSparkR 사용하고 데이터 간에 쉽게 공유할 수 있습니다. 에서 Spark 테이블을 sparklyr 만들고 읽을 수 있습니다 SparkR.

# load the sparklyr package
library(sparklyr)

# Create table in `sparklyr`
mtcars_sparklyr <- copy_to(sc, df = mtcars, name = "mtcars_tbl", overwrite = TRUE, repartition = 3L)

# Read table from `SparkR`
mtcars_sparklr <- SparkR::sql("select cyl, count(*) as n
from mtcars_tbl
GROUP BY cyl
ORDER BY n DESC")

head(mtcars_sparklr)

기계 학습

다음은 선형 회귀 모델을 맞추는 데 사용하는 ml_linear_regression() 예제입니다. 기본 제공 mtcars 데이터 세트를 사용하며, 무게()와 엔진에 포함된 실린더 수()에 따라 자동차의 연료 소비량(mpgwt)을 예측할 수 있는지 확인합니다cyl. 각 경우에 각 기능 간의 mpg 관계가 선형이라고 가정합니다.

테스트 및 학습 데이터 집합 생성

분할, 학습에 70%, 모델 테스트에 30%를 사용합니다. 이 비율을 사용하여 플레이하면 다양한 모델이 생성됩니다.

# split the dataframe into test and training dataframes

partitions <- mtcars_tbl %>%
  select(mpg, wt, cyl) %>% 
  sdf_random_split(training = 0.7, test = 0.3, seed = 2023)

모델 학습

로지스틱 회귀 모델을 학습합니다.

fit <- partitions$training %>%
  ml_linear_regression(mpg ~ .)

fit

summary() 이제 모델의 품질과 각 예측 변수의 통계적 중요성에 대해 좀 더 자세히 알아봅니다.

summary(fit)

모델 사용

를 호출 ml_predict()하여 테스트 데이터 세트에 모델을 적용할 수 있습니다.

pred <- ml_predict(fit, partitions$test)

head(pred)

Sparklyr를 통해 사용할 수 있는 Spark ML 모델 목록은 참조 - ML을 참조 하세요.

Spark 클러스터에서 연결 끊기

Spark 세션을 종료하는 Notebook 리본의 맨 위에 있는 세션 중지 단추를 호출 spark_disconnect() 하거나 선택할 수 있습니다.

spark_disconnect(sc)

R 기능에 대해 자세히 알아보세요.