핀아의 저장소 ( •̀ ω •́ )✧
02_01. Structured vs Unstructured Data 본문
- Unstructured
- Semi Structured
- Structured
✅ 데이터를 합치고 추출 하기
Q. 미국의 $2000불 이상의 주식만 가져올 때, 가능한 방법은????
# CASE 1: join 먼저, filter 나중에
tickerPrice = tickers.join(prices)
tickerPrice.filter(lambda x: x[1][0][2] == "USA" and x[1][1][0] > 2000).collect()
# CASE 2: filter 먼저, join 나중에
filteredTicker = tickers.filter(lambda x: x[1][2] == "USA")
filteredPrice = prices.filter(lambda x: x[1][0] > 2000)
filteredTicker.join(filteredPrice).collect()
- shuffling을 최소화 하기 때문에 CASE2의 성능이 더 좋다.
하지만 이런 최적의 방법을 찾는 일을 일일이 하다보면, 개발자에 따라 성능 차이가 너무 심하게 나기 때문에 문제가 발생한다.
이를 위해 데이터 구조화를 하게 되는데, 데이터 구조화가 되어있다면 spark가 자동으로 최적화해주기 때문이다.
✅ 구조화된 데이터란
- Unstructured: free form
- 로그 파일
- 이미지
- semi structured: 행과 열
- csv
- JSON
- XML
- structured: 행과 열 + 데이터 타입 (스키마)
- 데이터베이스
✅ Structured Data vs RDDs
- RDD
- 데이터의 구조를 모르기 때문에 데이터를 다루는 것을 개발자에게 의존
- Map, flatMap, filter 등을 통해 유저가 만든 function을 수행
- Structured Data
- 데이터의 구조를 이미 알고있으므로 어떤 테스크를 수행할 것인지 정의만 하면 됨
- 최적화도 자동으로 할 수 있음
✅ SparkSQL
- 구조화된 데이터를 다룰 수 있게 해준다.
- 유저가 일일이 function을 정의하는 일 없이 작업을 수행할 수 있다.
- 자동으로 연산이 최적화 된다.
'Big Data > Engineering' 카테고리의 다른 글
02_03. SQL 기초 (0) | 2023.05.24 |
---|---|
02_02. SparkSQL 소개 및 기초 (0) | 2023.05.14 |
01_08. Shuffling & Partitioning (0) | 2023.05.14 |
01_07. Key-Value RDD Operations & Joins (0) | 2023.05.14 |
01_06. Reduction Operations (0) | 2023.05.13 |
Comments