커리어 이야기
- 이것만은 기억하자!
- 남과 비교하지 말고 앞으로 2-30년을 보자
- 하나를 하기로 하면 적어도 6개월은 파자.
- 너무 빨리 포기하지 말자. 잘하는 사람들과 비교 금물. 어제의 나와 오늘의 나를 비교하자.
- 뭐가 잘 안 되면 오히려 천천히 가자
- 공부를 위한 공부를 하기보단 일을 시작해보자.
- 어디건 일을 시작하고 발전하자.
- 면접 실패를 감정적으로 받아들이지 말자.
- Love Myself!
- 커리어를 점진적 발전이라는 관점에서 보기
- 커리어가 평생 직장이란 것이 존재하던 세상에서는 Waterfall(폭포수)였으나 이제는 계속해서 배우고 변해야 하는 Scrum으로 변화하였다.
- 어디서 시작하건 자신에 대해 배우며 계속해서 변화하고 성장하는 것이 중요하다.
- Growth Mindset
- 커리어가 평생 직장이란 것이 존재하던 세상에서는 Waterfall(폭포수)였으나 이제는 계속해서 배우고 변해야 하는 Scrum으로 변화하였다.
- 새로운 시작(ex) 첫 직장에서의 일과 같은.. ) - 처음 90일이 중요하다. (The First ninety days)
- 자기 검열하지 말고 매니저 스타일을 파악하고 피드백을 요청하기
- 과거 상처를 갖고 시작하지 않기
- 남과 비교하지 않기
- 열심히 일하되 너무 서두르지 않기
- 새로운 기술의 습득이 아닌 결과를 내는데 초점 맞추기
- 아주 나쁘지 않은 환경에 있단 전제
- 자신이 맡은 일을 잘 하기 위해 필요한 기술 습득
- 예를 들어 자동화하기 혹은 실행시간 단축
- 자신이 맡은 일의 성공/실패를 어떻게 결정하는지 생각
- 매니저와의 소통이 중요
- 성공/실패 지표에 대해 생각
- 일을 그냥 하지 말고 항상 '왜' 이 일이 필요하고 큰 그림 생각
- 질문하기
SQL 소개
- 구조화된 데이터를 다루는 SQL. 데이터 규모와 상관없이 쓰인다.
- 모든 대용량 데이터 웨어하우스는 SQL 기반이다.
- Redshift, Snowflake, BigQuery, Hive, SparkSQL ...
- 데이터 분야에서 일하고자 하면 반드시 익혀야 할 기본 기술이다.
- 관계형 데이터베이스
- 대표적 관계형 데이터베이스
- MySQL, Postgres, Oracle, ...
- Redshift, Snowflake, BigQuery, Hive ...
- 관계형 데이터베이스는 2단계로 구성된다.
- 가장 밑단엔 테이블들이 존재
- 테이블들은 데이터베이스라는 폴더 밑으로 구성
- 테이블(=스키마) 구조
- 테이블들은 레코드들로 구성
- 레코드는 하나 이상의 필드로 구성
- 필드는 이름과 타입으로 구성됨
- 대표적 관계형 데이터베이스
관계형 데이터베이스 예제 : 웹 서비스 사용자 / 세션 정보
- 데이터
- 사용자 ID : 보통 웹서비스에서 등록된 사용자마자 유일한 ID 부여
- 세션 ID
- 사용자가 외부 링크(보통 광고)를 타고 오거나 직접 방문해서 올 경우 세션 생성
- 즉, 하나의 사용자 ID는 여러 개 세션 ID를 가질 수 있음
- 보통 세션의 경우 세션을 만들어낸 소스를 채널이란 이름으로 기록해둠
- 마케팅 관련 기여도 분석을 위함
- 세션 생성 시간도 기록
- 위의 데이터를 통해 다음과 같은 다양한 데이터 분석과 지표 설정 가능
- 마케팅 관련
- 사용자 트래픽 관련
- etc
- ex) 사용자 ID 100번이 총 3개의 세션을 갖는 예제
- 100번 ID를 가진 사용자의 웹 서비스 이용 경로
- 09:30 AM : 구글 광고 타고 방문
- 09:31 AM : 상품 광고 클릭
- 09:33 AM : 상품 리뷰 페이지 클릭
- 09:45 AM : 페이스북 광고 타고 방문
- 09:47 AM : 다른 상품 광고 클릭
- 10:30 AM : 네이버 광고 타고 방문
- 10:35 AM : 상품 구매
- 100번 ID를 가진 사용자의 웹 서비스 이용 경로
위의 데이터에 대해 생성될 수 있는 데이터베이스와 테이블은 다음과 같다.
- raw_data 데이터베이스
- user_session_channel
-
컬럼 타입 userid int sessionid varchar(32) channel varchar(32) - channel 값 ex) instagram, facebook, naver, etc...
-
- session_timestamp
-
컬럼 타입 sessionid varchar(32) ts timestamp
-
- user_session_channel
- marketing 데이터베이스
- ...
- SQL(Structured Query Language) 소개
- 1970년대 초반 IBM이 개발한 구조화된 데이터 질의 언어
- 주로 관계형 데이터베이스에 있는 데이터(테이블)를 질의하는 언어
- 두 종류의 언어로 구성된다.
- DDL(Data Definition Language) : 테이블 구조 정의어
- CREATE TABLE / DROP TABLE / ALTER TABLE
-
--ex CREATE TABLE raw_data.user_session_channel( userid int, sessionid varchar(32), channel varchar(32) );
- DML(Data Manipulation Language) : 테이블 조작 정의어
- SELECT FROM / INSERT INTO / UPDATE SET / DELETE FROM
-
-- ex SELECT * FROM raw_data.user_session_channel LIMIT 10; -- 10개의 데이터를 읽어와라 SELECT COUNT(1) FROM raw_data.user_session_channel; SELECT COUNT(1) FROM raw_data.user_session_channel; WHERE channel='Facebook'; -- channel 이름이 Facebook인 경우만 고려 SELECT COUNT(1) FROM raw_data.user_session_channel; WHERE channel like '%o%'; -- channel 이름에 o나 O가 있는 경우만 고려 SELECT channel, COUNT(1) --channel별 레코드 수 카운트하기 FROM raw_data.user_session_channel GROUP BY channel;
- 세션에 대한 모든 정보를 읽어오려면 user_session_channel과 session_timestamp를 조인해야 한다.
-
SELECT * FROM raw_data.user_session_channel usc JOIN raw_data.session_timestamp ts ON usc.sessionID = ts.sessionID;
- DDL(Data Definition Language) : 테이블 구조 정의어
- 1970년대 초반 IBM이 개발한 구조화된 데이터 질의 언어
SparkSQL 소개
- SparkSQL과 Spark Core의 차이점
- 구조화된 데이터 처리를 위한 Spark 모듈
- 대화형 Spark shell 제공
- 하둡 상 데이터를 기반으로 작성된 hive 쿼리의 경우 변경없이 최대 5~10배까지 빠른 성능을 가능하게 해준다.
- 데이터 프레임을 SQL로 처리 가능
- RDD 데이터, 외부 데이터는 데이터프레임으로 변환 후 처리 가능
- 데이터프레임은 테이블이 되고 그 다음부터 SQL 함수 사용 가능
- Spark의 일반적 사용법 이해
- 외부 데이터베이스 연결
- 외부 데이터베이스 기반 데이터 프레임 생성
- SparkSession의 read 함수를 사용해 테이블 혹은 SQL 결과를 데이터프레임으로 읽어옴
- Redshift 연결
- SparkSession을 만들 때 외부 데이터베이스에 맞는 JDBC jar 지정
- SparkSession의 read 함수 호출
- 로그인 관련 정보와 읽어오고자 하는 테이블 혹은 SQL 지정
- 결과가 데이터 프레임으로 리턴됨
- 데이터 프레임 기반 테이블 뷰 생성 : 테이블이 만들어짐
- createOrReplaceTempView : sparkSession이 살아있는 동안 존재
- createGlobalTempView : Spark 드라이버가 살아있는 동안 존재
- SparkSession의 sql 함수로 SQL 결과를 데이터 프레임으로 받음
- 외부 데이터베이스 기반 데이터 프레임 생성
- 외부 데이터베이스 연결
'AI > KDT 인공지능' 카테고리의 다른 글
[07/27] NLP : 텍스트 전처리 (0) | 2021.07.28 |
---|---|
[07/22] Spark 3 (0) | 2021.07.22 |
[07/20] Spark (0) | 2021.07.20 |
[07/19] 12주차 강의 개요 (0) | 2021.07.19 |
[06/28] 심층학습 기초2 (0) | 2021.06.28 |