데이터 엔지니어링 프로젝트를 진행한 YouPlace팀에서는 아래와 같은 프로젝트를 진행했습니다.
<aside>
이젠 검색도 유튜브 시대
제주여행을 계획할 때 브이로그 영상을 많이 참고하실텐데요
수많은 영상들과 영상 속 분산된 명소들을 하나 하나 찾으려 생각하면 막막하지 않으셨나요?
이러한 고민을 갖고 계신 분들을 위해, 유튜브 브이로거들이 찾아간 여행 명소들을 지도에서 한 눈에 파악할 수 있도록 만들었어요
(github : https://github.com/Boaz-Youplace)
16기 엔지니어링 고은서 | 중앙대학교 소프트웨어학부
16기 엔지니어링 류정화 | 성신여자대학교 융합보안공학과
16기 엔지니어링 송경민 | 국민대학교 소프트웨어학과
5. Ex 예시
제주 브이로그 시청 -> 영상 속 다양한 장소 정보 획득 -> naver에서 장소 검색 -> 장소의 위치 검
색
1. 주제 선정 배경 – 문제점 파악
여행을 준비하기에 앞서
유튜브 영상을 찾아보는
경우가 많음
영상 속의 장소정보들을 확인하려면,
네이버 등 다른 검색엔진 플랫폼을
재서치해야하는 불편함이 있음
유튜브 영상, 장소 세부 설명, 지도
등 필요한 정보들이 여러 매체에
분산되어 있음
6. 1. 주제 선정 배경 – 아이디어 좁히기
제주 여행 브이로그
data 활용
영상 검색을 통해 국내 여행지에 대한 사전 조사를 하는 경우가 많고,
특히 제주 브이로그 콘텐츠에 대한 수요와 공급이 모두 큼
따라서 유튜브를 통한 정보 수집이 수월할 것으로 예상
WHY
“ 유튜브 영상의 정보들은 매우 효과적이지만,
필요로 하는 정보들을 한 눈에 파악할 수 있는 플랫폼이 있었으면 좋겠다 ! “
7. 1. 주제 선정 배경 – 관련 레퍼런스 및 차별점
“국내 이용자들이 인스타그램을 통해 여러 장소를 적극적으로 탐색하
고,
방문한 후기를 공유하는 이용 형태에 주목하여,
더욱 편리하게 장소를 발견하고자하는 바람으로 제작 – 코리아 대표”
1. 인스타그램 속 정보 < 유튜브 속 정보
⇒ 훨씬 다양한 검색 기준 확보 가능
2. 브이로그 영상에 초점
⇒ 유튜브 영상 속 모든 명소를 한 눈에 확인 가능
8. 유튜브 API(+카카오API) → 카프카 → 스파크 SQL → DB → 스파크 SQL→ 장고 (웹)
2. 데이터 파이프라인
• 주 활용 데이터
Youtube API, Kakao Map API
• 기술 스택
Cloud AWS EC2, Docker
Engineering Kafka, Spark
DB & Web MYSQL(RDS), Django
9. 3. 데이터 설명 및 전처리 과정 - 데이터 설명
• Youtube API 데이터 수집
Search:list Search API를 통해서 동영상, 채널, 재생목록의 목록 등을 조회 가
능
Video:list Search API만으로는 조회수 등과 같은 통계 정보를 받아올 수 없음!
→ Search API에서 얻어온 video ID로 Videos API를 호출하여 자세한 정보 추출
<Search:list의 JSON 형태> <Video:list의 JSON 형태>
10. • 유튜브 일일 할당량
3. 데이터 설명 및 전처리 과정 - 데이터 설명
GCP의 ‘IAM 및 관리자 메뉴 – 할당량(Auotas)’ 에서 할당량을 볼 수 있음 (일간 할당량 : 10,000)
search:list, video:list 모두 maxResult 인자의 max 값: 50개
Search:list → 100(cost)*99(호출횟수) = 9900
Videos:list → 1(cost)*99(호출횟수) = 99
9900 + 99 = 9999 <10,000 이므로
50 * 99 = 약 5천개
⇒ 일일 총 뽑을 수 있는 영상 : 약 5000개
11. • Kakao API로 장소 데이터 수집
3. 데이터 설명 및 전처리 과정 - 데이터 설명
Youtube API를 사용하여 얻은 데이터들에서 추출한 장소를 Kakao API에 넣어 상세한 장소 정보 수집
12. 1. Youtube API를 통해 데이터 수집
2. title, description에서 영어,숫자 제거 & 특정 단어 삭제(‘제주’, ‘브이로그’ 등) & 띄어쓰기 기준으로 쪼개기
3. 데이터 설명 및 전처리 과정 - 전처리 과정
13. 3. Kakao API를 활용하여 장소 검색 4. 주소가 '제주특별자치도'가 아닌 데이터 삭제 & 검색결과의
가장 첫 장소만 남기고 삭제 & 관련 카테고리 데이터만 추출
3. 데이터 설명 및 전처리 과정 - 전처리 과정
14. 6. 영상 정보의 title, decription을 전처리하고 중복 제거
후 얻은 최종 데이터
3. 데이터 설명 및 전처리 과정 - 전처리 과정
5. Youtube API를 통해 얻은 영상정보와
Kakao API를 통해 얻은 장소 정보 합치기
<데이터 구조>
장소의 지역명, 장소 카테고리, 비디오 ID, 좋아요 수, 장소명, 업로드 시간, 조회수, 경도, 위도
15. 4. 구현 과정 설명 - Kafka
• 카프카 서버 구축
• Docker-desktop을 통해 CLI 접속
• Docker Hub에 있는 이미지 활용
• Zookeeper , kafka
• 프로젝트 요구사항에 맞게 config 내
server.properties 수정
Docker desktop에서
Kafka 컨테이너 접속 모습
16. 4. 구현 과정 설명 - Kafka
• Kafka Producer
• Python-kafka 라이브러리 활용
• 프로듀서 매개변수 설정
• 토픽 : 토픽 복제 계수 1 / 파티션 10
• 전처리한 데이터들을 카프카 프로듀서를 통해 send
Kafka Producer에서 다루는
JSON 형식의 데이터
프로듀서 매개변수 설정
17. 4. 구현 과정 설명 - Kafka
• Kafka Consumer
• Python-kafka 라이브러리 활용
• 컨슈머 매개변수 설정
• Group_id로 관리
• Offset_reset = ‘latest’
-> 파티션 별 Offset 저장 가능, 새로 들어온
record만 consume가능함
• Poll() & commit()으로 새로 들어온 record 인식
컨슈머 매개변수 설정
Offset check
19. 4. 구현 과정 설명 - Spark SQL
• 카프카 Consumer와 Spark 연결
• Mysql DB 삽입을 위한 형태 변환 작업 수행
• Spark SQL 라이브러리
• 정형 데이터 처리를 위한 스파크 모듈
• 스키마에 대한 표현방법 제공
• 데이터 형태를 Spark Dataframe으로 변환하여 진행
• 사용자 정의 함수, casting 등을 활용하여 원하는 형
태의 데이터 수집
printSchema 전
printSchema 후
20. 4. 구현 과정 설명 - MySQL
최종 DB에 데이터 적재된 모습 (workbench)
• Spark와 mysql 연결
• 다양한 옵션 셜정
• Numpartition 5 : 동시 write 작업
• Mysql RDS 생성
21. 4. 구현 과정 설명 - Spark SQL & 웹
• Spark sql 라이브러리를 이용한
다양한 통계처리 수행
• 최종 데이터가 적재되어 있는 Mysql DB 연동
• KaKao API + Djangotube를 이용한 기능 구현
• 커스텀 마커 오버레이, 유튜브 영상 재생
Ex) 구역마다 명소 데이터 개수
count
23. 5. 시연 및 개선할 점 – 발전 방향
1. 아이디어
• 제주/여행에 국한 되지 않고 데이터의 범위 확장
2. 스택 활용
• 높은 처리량을 위해 kafka 서버 옵션을 다양하게 수정 및 테스트
• 브로커를 여러 개 띄워보지 못한 점
• Kafka eco system을 다양하게 활용해보지 못한 점
3. 클라우드
• 더욱 다양한 인프라 활용 (GCP 등)
4. 웹 기능
• 더욱 다양한 기능 제공 (장소 검색 , 구글 소셜 로그인을 통한 즐겨찾기 기능 등)
24. ( 더 자세한 설명은 깃 헙 내 readme와 코드를 참고해주세요 ! 😊 )
GitHub