시작하기무료로 시작하기

데이터에 Spark를 더해 보세요

이전 연습 문제에서는 Spark에서 pandas로 데이터를 옮기는 방법을 살펴봤어요. 반대로, pandas DataFrame을 Spark 클러스터로 가져오고 싶을 수도 있죠! 이를 위한 메서드가 SparkSession 클래스에 있어요.

.createDataFrame() 메서드는 pandas DataFrame을 받아 Spark DataFrame을 반환합니다.

이 메서드의 결과는 로컬에 저장되며 SparkSession 카탈로그에는 등록되지 않아요. 즉, Spark DataFrame 메서드는 모두 사용할 수 있지만, 다른 컨텍스트에서는 이 데이터에 접근할 수 없습니다.

예를 들어, DataFrame을 참조하는 SQL 쿼리(즉, .sql() 메서드 사용)는 오류가 납니다. 이런 방식으로 접근하려면 해당 데이터를 임시 테이블로 저장해야 해요.

.createTempView()라는 Spark DataFrame 메서드를 사용하면 됩니다. 이 메서드는 등록하려는 임시 테이블의 이름 하나만 인수로 받습니다. 이 메서드는 DataFrame을 카탈로그의 테이블로 등록하지만, 테이블이 임시이기 때문에 해당 Spark DataFrame을 만든 특정 SparkSession에서만 접근할 수 있어요.

.createOrReplaceTempView() 메서드도 있습니다. 이 메서드는 기존 테이블이 없으면 새 임시 테이블을 안전하게 만들고, 이미 정의된 테이블이 있으면 갱신해요. 중복 테이블 문제를 피하기 위해 이 메서드를 사용하겠습니다.

아래 다이어그램에서 Spark 데이터 구조들이 서로 어떻게 상호작용하는지 확인해 보세요.

작업 공간에는 이미 spark라는 SparkSession이 있고, numpynp, pandaspd로 임포트되어 있습니다.

이 연습은 강의의 일부입니다

PySpark 기초

강의 보기

연습 안내

  • 무작위 수로 구성된 pandas DataFrame을 만드는 코드는 이미 제공되었고 pd_temp로 저장되어 있어요.
  • Spark 메서드 .createDataFrame()pd_temp를 인수로 전달해 spark_temp라는 Spark DataFrame을 만드세요.
  • Spark 클러스터의 테이블 목록을 확인해 새 DataFrame이 목록에 없는지 확인하세요. 이를 위해 spark.catalog.listTables()를 사용할 수 있어요.
  • 방금 만든 spark_temp DataFrame을 .createOrReplaceTempView() 메서드로 임시 테이블로 등록하세요. 임시 테이블 이름은 "temp"이어야 해요. 테이블 이름은 이 메서드의 유일한 인수로 전달한다는 점을 기억하세요!
  • 테이블 목록을 다시 확인하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Create pd_temp
pd_temp = pd.DataFrame(np.random.random(10))

# Create spark_temp from pd_temp
spark_temp = ____

# Examine the tables in the catalog
print(____)

# Add spark_temp to the catalog
spark_temp.____

# Examine the tables in the catalog again
print(____)
코드 편집 및 실행