[spark 3] 1. SparkSQL 소개

data_hamster·2023년 8월 2일
0

스파크 SQL
UDF
유닛 테스트

!

UDF는 데이터프레임, SQL 모두 설명
SQL 실습은 구글 콜랩에서
하이브 메타스토어
파이스파크 코드에 유닛테스트를 추가하는 방법 설명.

조금 더 정식으로 스파크 SQL에 대해 알아본다

하둡 - 맵 리듀스 나오면서 SQL한물갔다? 아님.
하이브, 프레스토같은 SQL 기술 등장.
구조화된 데이터는 SQL로 충분함.

꼭 데이터 업무를 하지 않아도, SQL를 많이 씀.

유데미에서도
SQL/대시보드를 누구나 접근할 수 있음.
SQL잘 모르는 사람이 쿼리를 잘못내려 잘못된 결론내릴 수 있음.
나쁜 품질의 테이블이 양산되기도 함. - 데이터 디스커버리 이슈. 원하는 정보를 찾으려다보니 비슷한 정보가 너무 많아 무얼 써야할지 모름.

시티즌 데이터 사이언티스트/데이터 애널리스트. 데이터 전문인력 아니지만 데이터를 다룸.


데이터프레임에 테이블 이름
sql 함수를 통해 테이블처럼 다룸
spark이 판다스 참고함. 따라서 판다스도 비슷함.
하이브 sql과 호환이 됨.
하둡에서 돌아가는 하이브를 스파크로 대체 목적이었기 때문에.
하이브가 메모리를 지원하기 지원하면서 etl, elt관점에서 큰 차이 없음
하이브 메타스토어를 연결할 수 있음 -> 하이브 테이블을 읽고 쓸수 있음.
보통 스파크와 하이브를 동시에 운영함.


데이터프레임을 안쓰고 sql 쓰는게 좋음
결국 데이터 프레임으로 리턴되는거 참고.
1. sql이 가독성이 더 좋음. 이해하는사람이 훨씬 많음.
2. sql이 옵티마이제이션이 좀 더 쉬움.
일련의 코드를 최적화 하는거 보다 쉬움. 스파크 엔진을 통해. sql이 더 좋음.

  1. 핸들링 코드는, 쉽게 포팅 가능함.
    어떤 테이블 컬럼 엑세스하는지 분명히 나옴. 접근권한 측면에서 sql 파싱함으로써 알수 있음. 지금 사용자의 권한과 매칭 가능.

sql 가능하면 굳이 데이터 프레임 쓸 필요 없음.

데이터 업무를 오래하다보니 구조화된 데이터를 다루는데에는 SQL만한게 없음. 꼭 많이 배워둘 것.


테이블 이름을 지정해야 데이터프레임 접근 가능
만드는 방법 2가지.
1. createOrReplaceTempView

  • 스파크 세션 살아 있는 동안
  1. ~~글로벌TempView
  • 스파크 드라이버가 살아있는 동안

잠깐동안 존재하는 임시 테이블.

보통 세션을 하나만들기 때문에 큰 차이는 없음.

namegender_df.createOrReplaceTempView("namegender")


JDBC로 관계형 데이터베이스와 어떻게 연동?
포맷을 jdbc로 부르고
어떤 드라이버 쓸 것인지
url 로 포트넘버, 유저아이디, 비번, 레드쉬프트 주소,
마지막으로 테이블 호출.

결과적으로 이를 데이터프레임으로 호출함. 여기에 권한만 있다면 spark.write을 통해 데이터를 쓸 수도 있음.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글