1. Nauka
  2. /
  3. Kursy
  4. /
  5. R에서 sparklyr로 시작하는 Spark

Connected

Ćwiczenie

중간 결과 저장하기

1장에서 보셨듯이 R과 Spark 사이에서 데이터를 복사하는 작업은 근본적으로 느립니다. 즉, 이전 연습 문제에서처럼 데이터를 수집하는 작업은 정말로 필요할 때만 해야 합니다.

파이프 연산자는 데이터 조작 명령을 연결할 때 매우 유용하지만, 일반적으로 모든 단계를 한 줄로만 묶어서 전체 분석을 끝낼 수는 없습니다. 예를 들어, 아래처럼 작성하는 것은 디버깅이 거의 불가능하므로 좋지 않은 관행입니다.

final_results <- starting_data %>%
  # 743개의 단계가 파이프로 연결됨
  # ... %>%
  collect()

여기서 딜레마가 생깁니다. 중간 계산 결과를 저장할 필요는 있지만, 느리기 때문에 collect()로 가져오고 싶지는 않습니다. 해결책은 compute()를 사용해 계산은 수행하되, 결과를 Spark의 임시 데이터 프레임에 저장하는 것입니다. compute()는 두 개의 인수를 받습니다. 하나는 티블(tibble), 다른 하나는 결과를 저장할 Spark 데이터 프레임의 이름입니다.

a_tibble %>%
  # 일부 계산 %>%
  compute("intermediate_results")

Instrukcje

100 XP

Spark 연결 spark_conn이(가) 준비되어 있습니다. Spark에 저장된 트랙 메타데이터에 연결된 티블 track_metadata_tbl도 미리 정의되어 있습니다.

  • track_metadata_tbl에서 artist_familiarity가 0.8보다 큰 행만 필터링하세요.
  • compute()를 사용해 결과를 계산하세요.
    • 결과를 "familiar_artists"라는 이름의 Spark 데이터 프레임에 저장하세요.
    • 반환값을 R 티블 computed에 할당하세요.
  • src_tbls()를 사용해 사용 가능한 Spark 데이터셋을 확인하세요.
  • computed의 class()를 출력하세요. collect()와 달리 compute()는 원격 티블을 반환합니다. 데이터는 여전히 Spark 클러스터에 저장되어 있습니다.