커리어 이야기

 

  • 이것만은 기억하자!
    • 남과 비교하지 말고 앞으로 2-30년을 보자
    • 하나를 하기로 하면 적어도 6개월은 파자.
      • 너무 빨리 포기하지 말자. 잘하는 사람들과 비교 금물. 어제의 나와 오늘의 나를 비교하자.
      • 뭐가 잘 안 되면 오히려 천천히 가자
    • 공부를 위한 공부를 하기보단 일을 시작해보자.
      • 어디건 일을 시작하고 발전하자.
      • 면접 실패를 감정적으로 받아들이지 말자.
    • Love Myself!
  • 커리어를 점진적 발전이라는 관점에서 보기
    • 커리어가 평생 직장이란 것이 존재하던 세상에서는 Waterfall(폭포수)였으나 이제는 계속해서 배우고 변해야 하는 Scrum으로 변화하였다. 
      • 어디서 시작하건 자신에 대해 배우며 계속해서 변화하고 성장하는 것이 중요하다. 
      • Growth Mindset
  • 새로운 시작(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 : 상품 구매

 

위의 데이터에 대해 생성될 수 있는 데이터베이스와 테이블은 다음과 같다.

 

  • 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
  • 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;

 


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

+ Recent posts