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

제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색

  • 1.
    카프카와 스파크를 활용한 유튜브영상 속 제주 명소 검색 YouPlace BOAZ 16기 엔지니어링 고은서 류정화 송경민
  • 2.
    주제 선정 배경 데이터파이프라인 소개 데이터 설명 및 전처리 과정 구현 과정 설명 시연 및 개선할 점
  • 3.
    팀원 소개 16기 엔지니어링고은서 중앙대학교 소프트웨어학부 16기 엔지니어링 류정화 성신여자대학교 융합보안공학과 16기 엔지니어링 송경민 국민대학교 소프트웨어학과
  • 4.
    1. 주제 선정배경 <관련 뉴스 기사 및 조사결과>
  • 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
  • 18.
  • 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
  • 22.
  • 23.
    5. 시연 및개선할 점 – 발전 방향 1. 아이디어 • 제주/여행에 국한 되지 않고 데이터의 범위 확장 2. 스택 활용 • 높은 처리량을 위해 kafka 서버 옵션을 다양하게 수정 및 테스트 • 브로커를 여러 개 띄워보지 못한 점 • Kafka eco system을 다양하게 활용해보지 못한 점 3. 클라우드 • 더욱 다양한 인프라 활용 (GCP 등) 4. 웹 기능 • 더욱 다양한 기능 제공 (장소 검색 , 구글 소셜 로그인을 통한 즐겨찾기 기능 등)
  • 24.
    ( 더 자세한설명은 깃 헙 내 readme와 코드를 참고해주세요 ! 😊 ) GitHub

Editor's Notes

  • #26 이상으로 Youplace 팀의 발표를 마치도록 하겠습니다. 감사합니다.