빠른 시작: Apache Spark를 사용하여 분석
이 자습서에서는 Azure Synapse용 Apache Spark를 사용하여 데이터를 로드하고 분석하는 기본 단계에 대해 알아봅니다.
필수 조건
샘플 데이터를 기본 스토리지 계정에 배치했는지 확인합니다.
서버리스 Apache Spark 풀 만들기
- Synapse Studio의 왼쪽 창에서 관리>Apache Spark 풀을 차례로 선택합니다.
- 새로 만들기를 선택합니다.
- Apache Spark 풀 이름에 Spark1을 입력합니다.
- 노드 크기에 Small을 입력합니다.
- 노드 수의 경우 최솟값 및 최댓값을 각각 3으로 설정합니다.
- 검토 + 만들기>만들기를 차례로 선택합니다. 몇 초 후에 Apache Spark 풀이 준비됩니다.
서버리스 Apache Spark 풀 이해
서버리스 Spark 풀은 사용자가 Spark를 사용하는 방법을 표시하는 방식입니다. 풀 사용을 시작하면 필요한 경우 Spark 세션이 생성됩니다. 풀은 해당 세션에서 사용할 Spark 리소스의 수와 세션이 자동으로 일시 중지되기 전까지의 지속 시간을 제어합니다. 풀 자체가 아닌 해당 세션 중에 사용되는 Spark 리소스에 대한 비용을 지불합니다. 이러한 방식으로 Spark 풀을 사용하면 클러스터를 관리하지 않고 Apache Spark를 사용할 수 있습니다. 이는 서버리스 SQL 풀의 작동 방식과 유사합니다.
Spark 풀을 사용하여 NYC Taxi 데이터 분석
참고 항목
샘플 데이터를 기본 스토리지 계정에 배치했는지 확인합니다.
Synapse Studio에서 개발 허브로 이동합니다.
새 Notebook을 만듭니다.
새 코드 셀을 만들고, 다음 코드를 해당 셀에 입력합니다.
%%pyspark df = spark.read.load('abfss://users@contosolake.dfs.core.windows.net/NYCTripSmall.parquet', format='parquet') display(df.limit(10))
abfss URI 체계에 따라 스토리지 계정에서 샘플 파일을 참조하도록 로드 URI를 수정합니다.
노트북의 연결 대상 메뉴에서 이전에 만든 Spark1 서버리스 Spark 풀을 선택합니다.
셀에서 실행을 선택합니다. Synapse는 필요한 경우 새 Spark 세션을 시작하여 이 셀을 실행합니다. 새로운 Spark 세션이 필요한 경우 처음에는 만드는 데 약 2~5분 정도 소요됩니다. 세션이 만들어지면 셀이 실행되는 데 약 2초가 소요됩니다.
데이터 프레임의 스키마만 확인하려면 다음 코드를 사용하여 셀을 실행합니다.
%%pyspark df.printSchema()
Spark nyctaxi 데이터베이스에 NYC 택시 데이터 로드
데이터는 df라는 데이터 프레임을 통해 사용할 수 있습니다. 이제 이를 nyctaxi라는 Spark 데이터베이스에 로드합니다.
Notebook에 새 코드 셀을 추가하고 다음 코드를 입력합니다.
%%pyspark spark.sql("CREATE DATABASE IF NOT EXISTS nyctaxi") df.write.mode("overwrite").saveAsTable("nyctaxi.trip")
Spark 및 Notebook을 사용하여 NYC 택시 데이터 분석
새 코드 셀을 만들고, 다음 코드를 입력합니다.
%%pyspark df = spark.sql("SELECT * FROM nyctaxi.trip") display(df)
셀을 실행하여 nyctaxi Spark 데이터베이스에 로드한 NYC 택시 데이터를 표시합니다.
새 코드 셀을 만들고, 다음 코드를 입력합니다. 이 데이터를 분석하고 결과를 nyctaxi.passengercountstats라는 테이블에 저장합니다.
%%pyspark df = spark.sql(""" SELECT passenger_count, SUM(trip_distance) as SumTripDistance, AVG(trip_distance) as AvgTripDistance FROM nyctaxi.trip WHERE trip_distance > 0 AND passenger_count > 0 GROUP BY passenger_count ORDER BY passenger_count """) display(df) df.write.saveAsTable("nyctaxi.passengercountstats")
셀 결과에서 차트를 선택하여 시각화된 데이터를 표시합니다.