빅데이터 배치 분석 및 대화형 질의
3-1. 배치분석
- Batch 분석
- 많은 데이터를 큰 단위로 분석하는 분석 방법 ex) ETL
- RDD operation 통해서 표현 가능
- RDD operation 통해서 표현하기
- RDD 생성
- 병렬화된 컬렉션 생성 - 기존언어를 병렬 collection, Paralleize하면 RDD 형태로 변환
- 실제로 아주 큰 데이터를 분산파일 시스템에 저장할때는 다음방법
- 데이터 파일들 위치를 textFile이라는 함수에 주면 데이터를 읽어서 RDD 형성
- RDD 변환
- Map 변환 : 각각의 원소에 함수를 적용해서 결과 만들어내서 RDD 생성
- flatMap에 넘겨진 함수 적용
- filter : RDD서 포함된 element중 조건을 만족하는 것만 넘겨줌
- RDD 생성
- Map & flattenMap
- Map 변환시에는 tokenize
- 해당하는 string을 받아서 스페이스 인식후 word를 따로 끄집어냄
- RDD의 각각의 원소가 리스트가 됨( 원소 인식)
- flatMap 역시 tokenize
- list의 컬렉션이 아닌 string의 컬렉션 형태로 나옴
- 리스트 안에 있는 것들을 다 꺼내서 반영 ( 그냥 나옴)
- Map 변환시에는 tokenize
- Pair RDD
- join() - join은 두개의 RDD가 있을때 같은 key를 같는 element 들을 모아 그룹핑
- reduceByKey() - 각가의 키에 대해서 데이터를 모으는 과정
- 변환
- reduceByKey()
- groupByKey() - 같은 키를 갖는 값들을 모으는 것
- keys - key들만 모아서 RDD 만들고 return
- values - value에 해당하는 부분만 모아서 반환
- sortByKey - 정렬후 돌려줌
- join
- Action
- Spark가 결과를 만들어내도록 trigger하는 operation
- collect
- RDD의 원소를 다 모아서 master에 해당하는 Action에 돌려줌
- count
- first - 첫번재 원소
- take(n) - 처음 n개 반환
- save
- saveAsTextFile
- saveAsSequenceFile
- Persistence
- rdd.persist() - 계산결과 저장시 쓸수 있음 저장되어 있는 rdd 사용할 수 있음
- 각각의 load는 RDD의 특정 부분을 메모리에 저장, 그후에 RDD 부분을 사용
- 손상시에는 lineage를 통해 자동적으로 재계산
3-2. 대화형 질의
- 대화형
- 구조화된 데이터에서 사용
- SQL - 관계형 모델로 표현됐을 때 사용하는 도메인 특화된 언어
- talbe 형태 - col이 데이터 종류
- operation
- projection : 보고싶은 col만 볼 수 있음
- Selection : 특정 조건을 만족하는 row들만 뽑아서 그 결과를 볼 수 있음
- Aggregation : 하나의 col에서 데이터 통계를 보고싶을 때 사용
- Join : 두개의 테이블을 같이 보고싶을때
- natural join : 두 테이블에 해당하는 col 값 있어야함
- left : 왼쪽에 해당하는 col 존재해야함
- right : 오른쪽에 해당하는 col 존재해야함
- Spark SQL
- DataFrame : 데이터가 여러 row 이름을 가진 col 있음
- SQL질의를 Spark 가 이행하는 RDD 변환으로 바꿔서 수행
- API
- df.show 하면 내부정보중에 일정부분을 standard out으로 보여줌
- Operation
- select()
- filter()
- groupBy()
- 관계형 데이터 베이스에서 전통적인 SQL 실행
- df.createOrReplaceTempView("이름") - 등록하기
- spark.sql() - 이걸로 SQL 쿼리문 작성 가능
Quiz
Quiz_1
빅데이터 배치 분석은 실시간으로 들어오는 데이터를 빠르게 분석하여 계속해서 실시간으로 결과를 내는 분석 방법이다.
O
X 정답
해설)
정답은 x입니다. 빅데이터 배치 분석은 고정되어 있는 데이터를 분석하여 결과를 내는 분석 방법이다. 새로운 분석 job이 수행될 때마다 새로운 결과가 나온다.
Quiz_2
rdd = sc.parallelize([1, 2, 3, 4])
mappedRDD = rdd.map(lambda x: x*2)
filteredRDD = mappedRDD.filter(lambda x: x % 2 == 0)
위 프로그램을 수행하고 collect action을 수행하면 그 결과로 돌아오는 값은?
1, 2, 3, 4
2, 4, 6, 8 정답
2, 4
6, 8
해설)
정답은 2번입니다. rdd는 {1, 2, 3, 4}, mappedRDD는 각 수에 2를 곱해서 새로운 결과를 얻어 {2, 4, 6, 8}이 되고, 마지막으로 filteredRDD는 짝수만 선택하는 것이라 전체를 다 선택하여 {2, 4, 6, 8}이 된다.
Quiz_3
data = sc.textFile(“hdfs://data/logs”)
counts = data.flatMap(lambda line: line.split(“ “)).map(lambda word: (word, 1)).____
counts.saveAsTextFile(“hdfs://results/counts”)
위의 application은 스파크에서 word count를 구현한 것이다. 밑줄 친 부분에 들어가야 할 코드를 고르시오.
groupByKey()
reduce(lambda a, b: a + b)
reduceByKey(lambda a, b: a + b) 정답
count()
해설)
정답은 3번입니다. 각 word를 key로 해서 해당 word별로 reduce를 수행하는 reduceByKey를 사용해야 하고 주어야 하는 함수는 두 count 값을 합하여 합한 count값을 반환하는 함수여야 한다.
Quiz_4
관계형 오퍼레이션에 대한 설명 중 틀린 것을 고르시오
Selection: 특정 Predicate을 만족하는 행을 선택한다.
Join: 두 개의 완전히 동일한 컬럼 구조를 가진 테이블을 합친다. 정답
Projection: 테이블에서 특정한 열만을 선택한다.
Aggregation: 특정한 열에 대해 count, sum등의 연산을 이용하여 데이터를 합친다.
해설)
정답은 2번입니다. Join은 두 테이블 중 같은 열의 이름을 가진 부분이 있는 경우 합쳐서 분석할 수 있다.
'공부 > 빅데이터와 머신러닝 소프트웨어 (K-MOOC)' 카테고리의 다른 글
4주차. 빅데이터 스트림 분석 (0) | 2021.04.24 |
---|---|
2주차. 빅데이터 처리 시스템 개요 및 예시 (0) | 2021.04.19 |
1주차. 빅데이터 분석 소프트웨어 개요 (0) | 2021.04.18 |