[TIL Day51] Big Data: SparkSQL을 이용한 데이터 분석
SparkSQL이란?
구조화된 데이터 처리를 위한 Spark 모듈
-
특징
- 대화형 Spark 셸이 제공됨
- 하둡 상의 데이터를 기반으로 작성된 Hive 쿼리의 경우 변경없이 최대 100배까지 빠른 성능을 가능하게 해줌
- 데이터프레임을 SQL로 처리 가능- RDD 데이터는 데이터프레임으로 변환한 후 처리 가능
- 외부 데이터(스토리지, 관계형 데이터베이스)는 데이터프레임으로 변환한 후 처리 가능
- 데이터프레임은 테이블이 되고 (특정 함수 사용) 그 다음부터 SQL 함수를 사용 가능
-
SparkSQL 사용법: 외부 데이터베이스 연결
SparkSession의 read 함수를 사용하여 테이블 혹은 SQL 결과를 데이터프레임으로 읽어온다.
Redshift 연결 예제
- SparkSession을 만들 때 외부 데이터베이스에 맞는 JDBC jar를 지정
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.jars", "/usr/local/lib/python3.6/dist-packages/pyspark/jars/RedshiftJDBC42-no-awssdk-1.2.20.1043.jar") \
.getOrCreate()
- SparkSession의 read 함수 호출
- 로그인 관련 정보와 읽어오고자 하는 테이블 혹은 SQL을 지정
- 결과가 데이터프레임으로 리턴됨
df_user_session_channel = spark.read \
.format("jdbc") \
.option("driver", "com.amazon.redshift.jdbc42.Driver") \
.option("url", "jdbc:redshift://learnde.cduaw970ssvt.ap-northeast-2.redshift.amazonaws.com:5439/prod?user=guest&password=Guest1!*") \
.option("dbtable", "raw_data.user_session_channel") \
.load()
- 앞서 리턴된 데이터프레임에 테이블 이름 지정
- 데이터프레임을 기반으로 테이블 뷰 생성: 테이블이 만들어짐
- createOrReplaceTempView: sparkSession이 살아있는 동안 존재
- createGlobalTempView: Spark 드라이버가 살아있는 동안 존재
- SparkSession의 SQL 함수를 사용
- SparkSession의 SQL 함수로 SQL 결과를 데이터프레임으로 받음
namegender_df.createOrReplaceTempView("namegender")
namegender_group_df = spark.sql("
SELECT gender, count(1) FROM namegender GROUP BY 1
")
print(namegender_group_df.collect())
Author And Source
이 문제에 관하여([TIL Day51] Big Data: SparkSQL을 이용한 데이터 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dhelee/TIL-Day51-Big-Data-SparkSQL을-이용한-데이터-분석저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)