전체 글 96

[빅데이터를 지탱하는 기술] Ch3.빅데이터 분산 처리 프레임워크

3-1 대규모 분산 처리의 프레임워크 구조화 데이터(structured data) 스키마(schema) 명확하게 정의된 데이터 테이블 비구조화 데이터(unstured data) 스키마가 없는 데이터 텍스트, 이미지 스키마리스 데이터(schemaless data) CSV, JSON(인터넷을 통해 주고받는 데이터), XML 서식은 정해져 있지만, 컬럼 수나 데이터형은 명확X 일반적으로 구조화 데이터 압축률 높이기 위해 열지향 스토리지로 저장 즉, MPP DB로 저장하거나 Hadoop 상에서 열 지향 스토리지 형식으로 변환 구조화된 데이터중 시간에 따라 증가하는 데이터를 팩트 테이블, 그에 따른 부속 데이터를 디멘젼 테이블데이터 구조화 열 지향 스토리지의 작성 MPP DB의 경우 제품에 따라 스토리지의 형식이..

[프로그래머스] 데이터 엔지니어 study - 8주차

1.Database Normalizaion DB를 조직적이고 일관된 방법으로 디자인 → 데이터 정합성 유지, 수정/적재/삭제 용이 사용되는 개념 → Primary key, Composite key, Foregin key 1NF(First Normal Form) 2NF(Second Normal Form) 일단 1NF 만족 Primary Key 중심으로 의존결과 알 수 있어야함 부분적인 의존도 x → 모든 부가 속성들은 Primary Key를 가지고 찾을 수 있어야함 3NF(Third Normal Form) 2NF 만족 전이적 부분 종속성 없어야함 Slowly Changing Dimensionsl DW, DL에서 모든 테이블의 히스토리를 유지하는 것이 중요함 보통은 두개의 timestamp 필드 create..

[머신러닝] 분류모델 성능지표 - 혼동행렬, AUC-ROC 커브, Lift/gain 차트

[분류 모델 성능지표] 목적: 라벨이 있는 경우 이진 분류 모델의 성능지표에 대해 정리한다. 1.혼동행렬(confusion matrix), 2.AUC-ROC curve 3.lift chart, gain chart 1. 혼동행렬(confusion matrix) predicted Positive Negative True Positive TP(True Positive) FN(False Negative) Negative FP(False Positive) TN(True Negative) TP: 양성인데, 양성으로 제대로 예측 FN: 양성인데, 음성으로 잘못 예측 FP: 음성인데, 양성으로 잘못 예측 TN: 음성인데, 음성으로 잘못 예측 1-1.정확도(Accuracy) ACC = (TP + FN) / (TP + F..

[프로그래머스] 데이터 엔지니어 study - 7주차

1.Spark 기초 hadoop이 1세대라면 스파크 2세대 빅데이터 처리 기술 YARN등을 분산환경으로 사용 Scala로 작성됨 등장 버클리 대학 AMPLab에서 아파치 오픈소스 프로젝트로 2013년 시작 Databricks 스타트업 창업 Spark 3.0 구성 Spark Core: pandas의 데이터 프레임과 같음 Spark SQL Spark ML: scikit learn의 분산 버전 Spark Streaming Spark GraphX 자체 서버 엔진을 들고있는게 아니라 하둡(YARN), Kubernetes 와 같은 resource 매니저 위에서 돌아감 Spark vs MapReduce Spark 기본적으로 메모리 기반 → 메모리 부족시 디스크 사용 하둡(YARN) 이외에도 다른 분산 컴퓨팅 환경 지..

[PySpark] 데이터프레임 값을 리스트로 반환하기

pyspark 데이터프레임의 특정 column의 value들을 리스트로 반환하는 방법이다. 여기서 x[2]는 cat2 column을 지칭하고 고유값이 아니라 전체 value를 list로 반환하려면 distinct() 없이 작업을 하면 된다. df2.show(3) #+---+----+----+--------+ #|ind| id|cat2|cat2_cnt| #+---+----+----+--------+ #| 1|2868| 167| 16| #| 2|1737| 157| 24| #| 3|1476| 189| 3| #+---+----+----+--------+ #only showing top 3 rows cat2_list = df2.rdd.map(lambda x: x[2]).distinct().collect() cat..

[PySpark] 빈 데이터 프레임 생성하고 데이터 집어넣기

pyspark에서 다음과 같이 테이블의 스키마를 지정하고 빈 데이터 테이블을 만들 수 있다. 스키마 지정시 뭐 int, float, double 등 데이터 유형을 지정할 수 있는데 임의로 string 데이터 형식을 지정해뒀다. spark 세션과 config는 본인의 환경에 맞게 설정하면 된다. from pyspark.sql import SparkSession from pyspark import SparkConf # spark-conf conf = SparkConf() # conf.set("spark.jars.packages", "org.apache.spark:spark-avro_2.12:3.2.0") conf.set("spark.driver.memory", "-g") conf.set("spark.exec..

[프로그래머스] 데이터 엔지니어 study - 4주차

0.질문 review AB test 모델 테스트시 처음에는 작게 시작, 1% 사용자에 대해 별문제 없으면 5%, 10% 점차적으로 늘려감 시리즈D 정도받고, 팀안정화 시 50:50 정도 가능하지 않나 Airflow 알아야 할 부분 시간이 지날수록 DAG가 점점 많아지기 때문에 정해진 시간에 시행되는 cronjob으로는 한계가 있음 Backfill 특정 DAG가 끝나면 다음 DAG, DAG들간의 dependency가 생김 시간순으로 트리거 가능(세가지 방법) 데이터 리니지 파악가능(어떤 데이터로부터 어떤 데이터가 생겨났는지), 데이터 과잉시 디스커버리 이슈, 데이터 카탈로그를 통해서 검색, 데이터 리니지 정보와 카탈로그 연동시 데이터 파악 쉽게 가능, 데이터 허브 데이터 엔지니어 연봉이 높은이유 수요가 큼..

[PySpark] 랜덤표본추출(sample, sampleBy, take_Sample)

Pyspark 데이터 프레임에서 랜덤 샘플링하는 방법을 찾아보다가 세가지 방법이 있길래 정리하려고 한다. 우선, 샘플링하고자 하는 데이터 프레임을 생성했다. from pyspark.sql import SparkSession spark = SparkSession.builder.master("local[1]").appName("regexp_replace").getOrCreate() address = [("RJFK-SLFKW-DFG1T","M BS", "1"), ("aedw-dg93r-d62g1","W SE", "2"), ("DFGE-FD23k-DA4G1", "M GJ", "3"), ("dssf-dg93r-d62g1","W SE", "4"), ("grdg-dg93r-d62g1","W SE", "5"), ("h..

[PySpark] SparkConf로 Spark 환경설정

Spark를 사용하기 이전에 SparkConf 객체를 사용해 Java system properties를 사용한다. 다같이 사용하는 분석서버에서 데이터 처리나 분석을 할 때 상황에 맞게 적절한 core수 제어나 메모리를 지정한다면 제한된 리소스로 효율적인 데이터 처리 및 분석이 가능하다. from pyspark.sql import SparkSession from pyspark import SparkConf # spark-conf conf = SparkConf() conf.set("spark.driver.memory", "50g") conf.set("spark.executor.memory", "30g") conf.set("spark.ui.port","4051") spark = SparkSession.buil..

[프로그래머스] 데이터 엔지니어 study - 3주차

0.커리어를 시작하는 관점에서 커리어는 정글짐 - 방향성 다양 40전에 다양한 경험 전문성 - 학습할 자신감, 변화 두려워 하지 않는 마음 1.결과를 내는데 집중하기 성취하는 경험하기 어떤 결과를 낼 것인지 생각 일을 왜하고 어떻게 끝내야 성공으로 끝나는지 나에게 일 준 사람 입장에서 생각하고 문제 정의 중요하지 않는 일은 대충하기 2.성장을 저해하는 요소 나이 혹은 남과의 비교 나에 대한 고정관년 과거의 상처 3.인격적인 성숙 긍정적인 태도 불만 1개, 감사 1개 주기적으로 회고 실수를 인정하는 여유, 모를때 모른다 4.시작과 꾸준함의 중요성 - 복리가 있는 일 시작이 반 꾸준히 매일 운동, 학습(호기심), 네트워킹(사람 만나기), 책읽기(글쓰기) 5.네트워크의 중요성 사람들 만날때 호기심 갖기 첫 인..