Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

스터디 진행 History #1

Open
s5646s opened this issue Jul 11, 2024 · 5 comments
Open

스터디 진행 History #1

s5646s opened this issue Jul 11, 2024 · 5 comments
Assignees

Comments

@s5646s
Copy link
Contributor

s5646s commented Jul 11, 2024

6월 20일 스터디 대화방 개설

공지

  • 스터디는 온라인으로 진행될 예정입니다.
  • Zoom 으로 주 1회 정기 스터디 모임을 진행해보려 합니다.
  • 스터디는 회차별로 돌아가며 각자 돌아가며 스터디 마스터 역할을 수행할 것입니다. (마스터는 제가 도와드릴 거니 걱정은 안하셔도 됩니다)
  • 스터디 진행 관련해서는 조금씩 구체화해보겠습니다 궁금한 점이나 의견들 많이많이 남겨주세요~~

스터디원들의 인사 한 마디

  • 준영: 안녕하세요 선배님! 항상 배워보고 싶었던 분야인데, 이랗게 좋은 강의 개설해주셔서 감사합니다!! 부족하지만 방학동안 열심히 배워보겠습니다!🔥🔥
  • 지우: 안녕하세요! 부족한 점이 많지만 방학 동안 열심히 참여해서 많이 배워가도록 노력하겠습니당 잘부탁드려요!
  • 수지: 안녕하세요 선배님! 아직은 부족하고 모르는 부분이 많지만 부족한 만큼 노력해서 최대한 배워갈 수 있도록 하겠습니다!! 좋은 기회 만들어주셔서 감사합니다 열심히 하겠습니다!
  • 태용: 안녕하세요!! 공부하고 싶었던 분야인데 시간내서 스터디 열어주셔서 감사합니다! 방학동안 열심히 참여해서 많이 배워가겠습니다!
  • 승빈: 승위 선배님 최선을 다하겠숩니다!
  • 성온: 안녕하세요 잘 부탁드립니다 :)

스터디 시간: 매주 수요일 저녁 9시 ~

@s5646s s5646s self-assigned this Jul 28, 2024
@s5646s
Copy link
Contributor Author

s5646s commented Jul 28, 2024

1주차

진행내용

  • 간단한 자기소개
  • 실무 관점에서의 데이터 엔지니어링 소개
  • 스터디 참여하게된 동기 이야기 나눠보기
  • 스터디 커리큘럼 소개

과제:

Introduction to Google Colab and PySpark
https://colab.research.google.com/drive/1G894WS7ltIUTusWWmsCnF_zQhQqZCDOc#scrollTo=1qV6Grv7qIa9

요 노트북 잘근잘근 물고 뜯어보고 오셔요!
다음주 스터디 마스터는 저이지만 다 같이 스터디 진행한다고 보시면 됩니다!

[심화 과제]
제대로 의미있는 학습 시간 가지고 싶다하시는 분은 해당 노트북의 설명 부분들을 한글로 번역해서 2차 배포하시면 아주 좋은 디딤돌이 될 거에요! ㅎㅎ

다음주 스터디 마스터: 승위

image

@s5646s
Copy link
Contributor Author

s5646s commented Jul 28, 2024

2주차

Introduction to Google Colab and PySpark

https://colab.research.google.com/drive/1G894WS7ltIUTusWWmsCnF_zQhQqZCDOc#scrollTo=1qV6Grv7qIa9

진행내용

  • Google Colab 환경에서 실습하며 PySpark 기본 개념 익혀보기

준영

현재까지 8. DataFrame Operations on Rows까지 코드 실행하고 여러가지 다른 코드도 실행 시켜보고 노션에 정리했습니다!
정리한 노션 링크 공유드립니다!

https://tinted-bread-8d9.notion.site/Introduction-to-Google-Colab-and-PySpark-by-96440b8e0cf046bc94297180e54ffec7

승빈

저도 한 번 읽고 실습해보았습니다~
dataframe에 대한 조작방법은 이해가 쉽게 되는데,
Job tuning? 쪽은 어렵네요ㅜ
https://www.notion.so/koseungbin/week-1-8ffe98ca27db46fcaed65c6098d5031e?pvs=4

준영

안녕하세요! 나른한 주말 오후입니다 🥱

다름이 아니고, 어제 승빈 선배님께서 공유해주신 노션 페이지에서 궁금하신 부분이라고 작성한 부분을 읽어봤습니다. 개인적으로 ‘빅테이터를 지탱하는 기술’이라는 책을 읽고 있었는데, 마침 3번 궁금증에 관한 내용을 책에서 읽었던 것 같아 부족하지만 조금이라도 도움이 되고자 제 생각을 공유드립니다!

다음은 책의 일부 내용입니다.
Hadoop은 단일 소프트웨어가 아니라 분산 시스템을 구성하는 다수의 소프트웨어로 이루어진 집합체이다.
그리고 Hadoop의 기본 구성 요소는 다음과 같다.

  1. 분산 파일 시스템 : HDFS
  2. 리소스 관리자 : YARN
  3. 분산 데이터 처리의 기반 : MapReduce

또, 모든 분산 시스템이 Hadoop에 의존하는 것이 아니라, Hadoop의 일부만 사용하거나 혹은 전혀 이용하지 않는 구성도 있다고 합니다.

HDFS는 일반 디스크(가정용 컴퓨터)에 들어가는 작은 파일을 저장할 때는 필요하지 않고, 파일의 크기가 너무 커서 단일 디스크에 저장하지 못하거나 혹은 저장할 수 있더라도 분산 처리의 속도와 안정성을 위해 클러스터 내 여러 컴퓨터에 나누어야 할 경우엔 HDFS가 필요한 것으로 알고 있습니다.

그래서 분산 시스템의 목적에 맞게 Hadoop의 구성 요소를 조합할 수 있고, 대용량 파일을 분산 저장해야 해서 파일 시스템에 HDFS가 필요한 경우가 있기 때문에 HDFS가 Hadoop의 구성 요소로써 필요하다고 생각합니다. 반대로 HDFS가 적합하지 않은 경우에, 분산 시스템의 이점을 기반으로 빠른 응답 시간을 원한다면 HBase가 대안이 될 수 있다고 합니다.!

2번 궁금증에 관한 내용은 구글링을 하다가 도움이 될 만한 문서를 찾았습니다. 아래 링크의 “사용 사례 비교: Hadoop과 Spark” 부분이 궁금증에 관해서 도움이 될 것 같아서 공유드립니다!

https://aws.amazon.com/ko/compare/the-difference-between-hadoop-vs-spark/

태용

https://www.notion.so/invite/5dc19cc70d3ca5e64a04b001a3c8204d2b5f59f9
저두 개인톡으로 말씀드린 사유로 늦게나마 공유합니다!
Common Questions, 특히 Tuning part 부분이 어려운 것 같아요..! 오늘 스터디 때 뵙겠습니다!

성온

저도 개인사유로 스터디전에 공유합니다!
명령어 수행 및 노트 위주이고 추가 내용은 아래에 정리해두었습니다.

https://s-on.notion.site/1-7b8f5f637b804c718f6b4a7055c9ecb8?pvs=25

image

과제

https://colab.research.google.com/drive/1BKHk-63x0TvZ1b-YUV2vAnNKwfIYWRiW?usp=sharing

@s5646s
Copy link
Contributor Author

s5646s commented Jul 28, 2024

3주차

다뤄볼 코드

movie_data_template.py: https://colab.research.google.com/drive/1BKHk-63x0TvZ1b-YUV2vAnNKwfIYWRiW?usp=sharing

진행내용

  • Google Colab 환경에서 실습하며 PySpark 기본 개념 익혀보기
  • Google Colab 노트북 Github에 올리기, Fork 하여 PR 생성해보기

성온

영화 장르에 중복 데이터가 있는 것 같은데 맞을까요? 🧐
그래서 저는 데이터 집계할 때 movie_genres.csv > (movieId, genre) 쌍을 유니크로 보고 중복제거하고 쿼리했어요

———————————————————————
요약 : movie_genres.csv 에서 한 개의 영화가 여러개의 장르를 가진다. 그런데 (영화아이디, 장르) 쌍 중복 이슈가 있어 제거가 필요해보인다.

Toy Story(movie_id : 1) 이면서 아래 mgenreId 와 genre 를 가짐

  • 389 : Animation
  • 341 : Cildren's
  • 553 : Comedy
  • 3282 : Animation
  • 3324 : Children's
  • 3446 : Comedy

이것을 어떻게 봐야할까?

하나의 영화가 여러개의 장르를 가질 수는 있다. (가족, 코미디)
그런데 (가족, 가족, 코미디, 코미디) 일 순 없다.

원본 데이터의 이슈로 보이는데 movie_genres > movie_id, genre 를 기준으로 중복 제거해야 할 것 같다.

현재 table 구조상 mgenre_id 는 다른 테이블과의 key 로 사용되지 않으므로 중복 제거 과정에서 유실되어도 이슈 없어보인다.

준영

제가 봤을 때도 모든 영화가 같은 장르가 두번 반복되어 저장되어있네요!

말씀해주신 "원본 데이터의 이슈로 보이는데 movie_genres > movie_id, genre 를 기준으로 중복 제거해야 할 것 같다." 이 말씀에 같은 생각입니다.

지난 주에 학습했던 노트북의 "Best Practices - 3. Drop Duplicates early." 부분이 떠올랐습니다!

좋은 정보 감사합니다! 다들 월요일 화이팅하세요!!

태용

성온님, 준영님 말씀대로 movie_genres > movie_id, genre를 기준으로 중복 제거를 하고 나니, 과제 2번의 답이 아래와 같이 바뀌었는데요, 각 genre의 highRatedCount는 정확히 절반 값으로 바뀌었고, lowRatedCount도 절반 가까이 줄었네요.

혹시 다들 이렇게 나오셨는지 여쭤봐도 괜찮을까요?

성온

highRatedCount 는 동일한데 lowRated Count 는 차이가 있네요
이건 사용한쿼리를 비교해보면 될 것 같아요

성온

https://github.com/so3500/2024-spark/blob/main/PySpark_study_playground_by_ON.ipynb

초반부에 세팅하고 마지막에 peek 정의하는 부분 참고하시면 좋을 것 같습니다!

태용

어제 발표했던 windowSpec 관련 문제입니다!
image


과제

과제는 토요일 자정까지 각자 구글 코랩에 과제 명세 작성해서 PR 생성하는 방식으로 올려보시죠!
(각자 1개 씩 생성한 창작 과제)
수요일에는 각자 올린 것들 모아서 풀어오시면 됩니당~

3주차_과제_원본데이터.zip
https://www.hani.co.kr/arti/society/environment/1124584.html

image

@s5646s
Copy link
Contributor Author

s5646s commented Jul 28, 2024

4주차

각자의 문제 취합해서 풀어온 결과 서로 공유해보기

csv 파일 여러 개를 하나의 Dataframe으로 생성하는 법!

# Read all files in a folder, please make sure only CSV files should present in the folder.
folderPath = "examples/src/main/resources"
df5 = spark.read.csv(folderPath)
df5.show()

진행내용

image
image

@s5646s
Copy link
Contributor Author

s5646s commented Jul 28, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant