Spark

Hive Partition 다루기

2 minute read

파티셔닝으로 데이터를 분할함으로써 쿼리가 스캔하는 데이터의 양을 제한하여 성능을 향상시킬 수 있습니다. 관리도 훨씬 편해집니다.

Hive Table 다루기

2 minute read

스파크는 하이브 메타스토어를 사용하기 때문에 하이브와 연동이 자연스럽습니다. 이번 포스트에서는 하이브 테이블의 생성, 삭제, 삽입, 변경 등을 알아보겠습니다. 하이브에는 관리형 테이블과 외부 테이블이라는 생소한? 개념이 있습니다.

Little Tips For Spark

less than 1 minute read

스파크를 사용하며 얻은 팁을 정리해보았습니다. 데스크탑 환경에서는 좌측 사이드바에서, 모바일에서는 제목 위의 Toggle Menu를 누르시면 스파크 관련 글을 확인할 수 있습니다.

Spark로 실시간 데이터 처리하기 (Trigger)

1 minute read

구조적 스트리밍은 트리거를 통해 언제 출력할지 결정할 수 있습니다. 기본적으로는 이전 작업이 끝나면 (마이크로 배치) 바로 다음 작업에 들어가지만, 너무 빠른 속도로 끝없이 동작하면 부하가 많이 가기 때문에 인터벌(100초 간격 등)을 설정하거나, 단 한번만 작동하도록 설정할 수 ...

Spark로 실시간 데이터 처리하기 (Intro)

5 minute read

실시간으로 입수되는 데이터를 Spark로 처리하는 방법에 대해 정리합니다. 스파크 2.2버전 기준으로 작성되었습니다. 스파크 3.0의 정식 릴리즈를 기다리며

Machine Learning with Spark (Spark로 머신러닝하기)

8 minute read

스파크의 분산처리 능력을 머신러닝에 사용할 수 있습니다. 간단한 자연어 처리 예제와 함께 알아보겠습니다. 비교적 쉽게 접할 수 있는 scikit-learn, R, tensorflow와 달리 SparkML은 흔치 않지만, 나름대로의 장점이 있습니다.

Data ETL with Spark (Spark로 데이터 처리하기)

8 minute read

모든 데이터 작업의 시작이자 끝인 ETL! 스파크를 이용하여 파일을 읽고, 변형하여 저장하는 방법에 대해 소개합니다. 데이터는 Kaggle의 Suicide Rates Overview 1985 to 2016를 사용했습니다.

제플린/스파크 도커로 설치하기

less than 1 minute read

제플린은 주피터와 비슷하게 웹기반의 노트북 스타일 에디터라고 할 수 있습니다. 아파치 재단의 공식 도커 이미지로 제플린을 설치해보겠습니다. 사용할 이미지는 built-in apache spark를 지원합니다. 스파크 사용법을 익히기에 좋습니다.

Spark SQL - 로우 분리하기

less than 1 minute read

데이터를 다루다보면 하나의 로우를 여러개로 분리해야하는 상황이 온다. 다음은 explode 를 활용한 예

Spark SQL - ROWID 대체

less than 1 minute read

Spark SQL에서 Oracle의 ROWID와 같은 기능을 사용해보자 한다. ROWID는 인덱스의 핵심이라고도 하는데, 이를 활용하여 중복제거, 유일성 부여 등의 작업이 가능하다.

Spark SQL - UPDATE 대체

1 minute read

spark sql에서는 update를 지원하지 않는다. (작성일 기준) RDD의 특성에 대해 생각해 보면 그 이유는 어렵지 않게 떠올릴 수 있지만, UPDATE를 주로 사용하는 오라클 쿼리를 spark버전으로 포팅하려는 입장(필자)에서는 굉장히 아쉬운 부분이다. 그래서 공부도 할 ...

Spark SQL - 기초

1 minute read

SparkSQL은 이름처럼 스파크 내에서 SQL문법을 사용 가능하게 하는 awesome한 도구다. 따라서 스파크를 코딩에 친숙하지 않은 구성원들이 마치 oracle을 사용하는 것 마냥 이용이 가능하다. (물론 다소간의 노력은 필요하다.)

Back to top ↑

airflow

[Airflow] XCom Tutorial

1 minute read

Airflow의 task는 독립적으로 실행되기 때문에 기본적으로는 서로 통신할 수단이 없습니다. 하지만 막상 작업 흐름을 만들다 보면 이전 작업의 결과, 요소 등을 다음 작업에 전달하면 깔끔하게 진행되는 경우가 있습니다. 그런 부분을 해결하기 위해 XCom을 이용해 메세지를 교환할...

[Airflow] Subdag 활용하기

1 minute read

재사용할 여지가 많은 task들을 묶어 subdag로 만들어 보겠습니다. 이렇게 하면 지저분한 과정들을 묶어서 한눈에 프로세스를 파악하기도 편하고, 관리도 쉬워집니다.

[Airflow] docker 활용 초간단 설치 2

4 minute read

지난 포스트에 이어 CELERY EXECUTOR를 사용하는 에어플로우, 도커로 설치하기 입니다. 설치 앞부분을 위한 깃레포, 도커이미지를 받아오는 부분은 이전 포스트를 확인해주세요.

[Airflow] docker 활용 초간단 설치

2 minute read

docker를 이용하여 airflow를 로컬에 설치하던 것보다 더 쉽게 설치해보겠습니다. 에어플로우를 더 아름답게 쓰기 위해서는 executor, db 설정이 필요한데, 모든 환경설정이 그렇듯이 설치할 부품들이 늘어날수록 고통도 늘어납니다. 이런 상황에서 docker는 그런 고통들...

[Airflow] 간단 설치

less than 1 minute read

다양한 extra pakages가 존재하나, 일단 기본 airflow를 설치합시다.

Back to top ↑

SQL

Hive Partition 다루기

2 minute read

파티셔닝으로 데이터를 분할함으로써 쿼리가 스캔하는 데이터의 양을 제한하여 성능을 향상시킬 수 있습니다. 관리도 훨씬 편해집니다.

Hive Table 다루기

2 minute read

스파크는 하이브 메타스토어를 사용하기 때문에 하이브와 연동이 자연스럽습니다. 이번 포스트에서는 하이브 테이블의 생성, 삭제, 삽입, 변경 등을 알아보겠습니다. 하이브에는 관리형 테이블과 외부 테이블이라는 생소한? 개념이 있습니다.

선분이력이란 무엇인가

2 minute read

선분이력 테이블은 시작 시점과 종료 시점을 관리함으로써 과거 특정 시점의 데이터 조회를 손쉽게 할 수 있습니다. 또한, 특정 레코드의 상태 변경 이력을 손쉽게 확인 할 수 있습니다.

Spark SQL - ROWID 대체

less than 1 minute read

Spark SQL에서 Oracle의 ROWID와 같은 기능을 사용해보자 한다. ROWID는 인덱스의 핵심이라고도 하는데, 이를 활용하여 중복제거, 유일성 부여 등의 작업이 가능하다.

Spark SQL - UPDATE 대체

1 minute read

spark sql에서는 update를 지원하지 않는다. (작성일 기준) RDD의 특성에 대해 생각해 보면 그 이유는 어렵지 않게 떠올릴 수 있지만, UPDATE를 주로 사용하는 오라클 쿼리를 spark버전으로 포팅하려는 입장(필자)에서는 굉장히 아쉬운 부분이다. 그래서 공부도 할 ...

SQL] Pivot quiz

1 minute read

엑셀의 피벗을 생각했는데 sql에서는 뭔가 다르더라. 하지만 결과물은 같다. Hackerrank > SQL > Advanced Select > Occupations

SQL] LENGTH vs CHAR_LENGTH

less than 1 minute read

안 쓰던 SQL을 연습하면서 퀴즈를 풀다 보니, 한가지 의문이 생겼다. length나 char_legth나 같은 값을 내는 것 같은 데, 왜 두 개나 있을까? 예전부터 쓰던 문법이라 그런 것인가 싶었지만 다른 이유가 있었다.

SQL] Hackerrank quiz

1 minute read

분명 Easy 단계인데 오랜만에 sql 써보려니 헷갈리던 문제

Back to top ↑

python

Text Alignment - 문자열 정렬

less than 1 minute read

python 문자열 정렬 기능 첫 번째 인자의 길이만큼 문자열을 할당하고, 문자열 제외 나머지 공간은 두 번째 인자(default=' ')로 채운다.

round(3.5) == round(4.5) 는 왜 True 일까?

less than 1 minute read

해커랭크를 풀면서 발생한 에러다. 문제를 풀던 중, 홀수의 숫자를 반으로 나눈 값의 몫 + 1의 값이 필요했다. 예를 들어 7을 받으면 4, 9를 받으면 5를 반환하면 되었다. 3.5나 4.5나 반올림하면 4, 5 이런 식으로 나오니까 round를 썼다. 결과는 에러.

오늘의 에러 - 180723

less than 1 minute read

해당 디렉토리에 있는 파일들의 확장자를 바꿔주는 코드를 실행하려다가 에러가 났다. 디렉토리 주소, 원 확장자, 바꿀 확장자 이렇게 세 개의 인자가 필요하다. 코드의 문제는 아니었고(내가 쓴 코드가 아니니까), 실행 방식의 문제였다.

pythonic tools - Combinatoric iterators

1 minute read

itertools에는 순열과 조합에 관련된 결과를 뱉는 iterators 또한 구현되어 있다. 순열, 조합에 대한 코딩 알고리즘 문제를 종종 볼 수 있는데, itertools만 알아놔도 아주 간단히 해결이 가능하다. 못 쓰게하면 어쩔 수 없지만.

pythonic tools - itertools

4 minute read

대망의 itertools. python3 공식 문서의 순서대로 정리했다. Infinite iterator 3개, 아닌 것 12개. combination은 따로 정리해야겠다.

pythonic tools - asterisk

2 minute read

python의 숙련도를 높여보고자 itertools를 공부하려고 보니 iterable, iterator, generator, 그리고 asterisk까지 서로 엮여있는 상황이라… 함께 공부하는 것이 나은 듯 하다. 어떤 공부든 요약 정리를 하다 보면 이해가 잘 되는 편이라, 오늘도 ...

Back to top ↑

CS

OS - Main Memory Management

3 minute read

기술 발전에도 불구하고 주기억장치, 메인 메모리는 언제나 부족하다. 발전하는 만큼 프로그램도 커지기 때문이다. 효과적 사용을 위해서 다음과 같은 방법들을 사용한다.

OS - Process Management

1 minute read

프로그램은 디스크 안에 잠자고 있는 상태이고, 프로그램을 메모리에 올리면(실행시키면) 프로세스가 된다.

OS - Deadlocks

1 minute read

프로세스는 작업을 진행하기 위해 자원을 필요로 하는데, 한정된 자원을 때문에 프로세스가 진행되지 못하고 무한정 대기하게 되는 교착상태가 발생하기도 한다.

OS - Virtual Memory

3 minute read

가상메모리란, 물리 메모리보다 큰 프로세스를 실행하기 위한 개념이다. 프로세스 이미지를 모두 메모리에 올리지 않고 현재 필요한 부분만 메모리에 올린다. <- 동적 적재와 유사(dynamic loading)

OS - Disk Scheduling

less than 1 minute read

디스크 접근 시간은 Seek time, rotational delay, transfer time 으로 구성되며, 이 중 데이터의 위치는 찾는 Seek time 이 가장 오래 걸린다. 데이터를 읽고 쓰는 작업을 위한 대기열인 디스크 큐 (disk queue) 에는 많은 요청(requ...

OS - File Allocation

1 minute read

보조기억장치인 파일 시스템(하드 디스크)에 파일을 할당하는 방법

Back to top ↑

docker

제플린/스파크 도커로 설치하기

less than 1 minute read

제플린은 주피터와 비슷하게 웹기반의 노트북 스타일 에디터라고 할 수 있습니다. 아파치 재단의 공식 도커 이미지로 제플린을 설치해보겠습니다. 사용할 이미지는 built-in apache spark를 지원합니다. 스파크 사용법을 익히기에 좋습니다.

[Airflow] docker 활용 초간단 설치 2

4 minute read

지난 포스트에 이어 CELERY EXECUTOR를 사용하는 에어플로우, 도커로 설치하기 입니다. 설치 앞부분을 위한 깃레포, 도커이미지를 받아오는 부분은 이전 포스트를 확인해주세요.

[Airflow] docker 활용 초간단 설치

2 minute read

docker를 이용하여 airflow를 로컬에 설치하던 것보다 더 쉽게 설치해보겠습니다. 에어플로우를 더 아름답게 쓰기 위해서는 executor, db 설정이 필요한데, 모든 환경설정이 그렇듯이 설치할 부품들이 늘어날수록 고통도 늘어납니다. 이런 상황에서 docker는 그런 고통들...

오늘의 에러 - 180808

less than 1 minute read

이번에도 경로(PATH) 문제였다. docker를 이용해 mysql을 열면서, host OS에 마운트하는 코드였다. (컨테이터가 제거되어도 안에 있는 데이터는 남기기 위한 마운트)

비전공자가 이해한 docker

3 minute read

도커를 사용하기 위한 가장 기초적인 것들을 정리하였다. linux 환경을 기초로 작성. 혹시 맥을 사게 된다면 맥 환경도 추가해야지.

Back to top ↑

Hadoop

Hive Partition 다루기

2 minute read

파티셔닝으로 데이터를 분할함으로써 쿼리가 스캔하는 데이터의 양을 제한하여 성능을 향상시킬 수 있습니다. 관리도 훨씬 편해집니다.

Hive Table 다루기

2 minute read

스파크는 하이브 메타스토어를 사용하기 때문에 하이브와 연동이 자연스럽습니다. 이번 포스트에서는 하이브 테이블의 생성, 삭제, 삽입, 변경 등을 알아보겠습니다. 하이브에는 관리형 테이블과 외부 테이블이라는 생소한? 개념이 있습니다.

비전공자가 이해한 Hadoop - Pig

1 minute read

피그(Pig)는 대용량 데이터 집합을 분석하기 위한 플랫폼으로 아파치 하둡(Apache Hadoop)을 이용하여 맵리듀스(MapReduce)를 사용하기 위한 높은 수준의 스크립트 언어와 이를 위한 인프라로 구성되어 있다. - wiki

비전공자가 이해한 Hadoop - Spark

1 minute read

스파크에 대해 알게 되었을 때, 가장 헷갈렸던 부분은 하둡과의 관계였다. 하둡 생태계의 한 부분이면서 하둡의 대체재라니. 하지만 실상은 대체재라기 보다는 보완재였다.

비전공자가 이해한 Hadoop

2 minute read

빅-데이터 세상에서, 데이터의 규모가 조금만 커져도 컴퓨터 한대로는 단순히 데이터를 불러오는 것조차 힘겨워지는 경우가 생긴다. 이를 해결하기 위해 Hadoop 을 이용하는 경우가 많아졌다. 데이터 엔지니어의 롤을 가진 분들이 주로 활용하는 툴.

Back to top ↑

blog

글또와 함께 글쓰기 습관들이기

1 minute read

2020년도 벌써 1.8개월이 지났습니다. 최근 급격히 바빠지면서 지난달에 세운 올해 상반기 목표 달성이 꽤 힘겹게 느껴지는데, 그 와중에 새로운 목표가 하나 더 생겼습니다. 일단 저질러놓고 수습하다 보면 무언가는 얻겠죠. 새로운 추가 목표는 글또(글 쓰는 또라이가 세상을 바꾼다)...

Jekyll 블로그 첫 포스트

less than 1 minute read

Jekyll을 이용해 첫 포스트를 써본다. Hexo로 한번 만들어 봤더니 크게 어렵..지 않을 줄 알았는데, 어렵긴 하다. 이 포스트가 fix없이 한방에 올라가기나 했으면 좋겠다.

Back to top ↑

Regression

추천 시스템 - SVD

3 minute read

추천 시스템은 사용자들이 평가한 상품들에 대한 정보를 학습하여 아직 평가하지 않은 상품에 대한 점수를 예측하는 모델이다. 여러 추천 시스템 모델 중 Netflix Prize competition에서 좋은 성과를 거둔 SVD에 대해 정리했다.

회귀 분석 - (2) 확률론적 모형

2 minute read

이전에 살펴본 결정론적 모형은 계산한 가중치의 신뢰도를 부트스트래핑(bootstrapping) 이라는 방법으로 구해야 한다. 반면, 확률론적 모형에서는 부트스트래핑 없이도 회귀분석 결과의 통계적 특성을 구할 수 있다. 확률론적 선형회귀 모형에서는 데이터가 확률 변수로부터 생성된 표...

회귀 분석 - (1) 결정론적 모형

1 minute read

14년도 계량 경제학 수업을 들을 때 처음 봤지만, 이제야 조금이나마 알 것 같다. 회귀 분석은 데이터가 어떤 특정한 경향을 보인다는 가정 하에 그 경향성을 찾아 설명하는 것이 목적이다.

Back to top ↑

Error

오늘의 에러 - 180813

1 minute read

신경망 모델을 클래스로 구현해보던 중 Saver에서 에러(ValueError: No variables to save)가 발생했다.

오늘의 에러 - 180808

less than 1 minute read

이번에도 경로(PATH) 문제였다. docker를 이용해 mysql을 열면서, host OS에 마운트하는 코드였다. (컨테이터가 제거되어도 안에 있는 데이터는 남기기 위한 마운트)

round(3.5) == round(4.5) 는 왜 True 일까?

less than 1 minute read

해커랭크를 풀면서 발생한 에러다. 문제를 풀던 중, 홀수의 숫자를 반으로 나눈 값의 몫 + 1의 값이 필요했다. 예를 들어 7을 받으면 4, 9를 받으면 5를 반환하면 되었다. 3.5나 4.5나 반올림하면 4, 5 이런 식으로 나오니까 round를 썼다. 결과는 에러.

오늘의 에러 - 180723

less than 1 minute read

해당 디렉토리에 있는 파일들의 확장자를 바꿔주는 코드를 실행하려다가 에러가 났다. 디렉토리 주소, 원 확장자, 바꿀 확장자 이렇게 세 개의 인자가 필요하다. 코드의 문제는 아니었고(내가 쓴 코드가 아니니까), 실행 방식의 문제였다.

Back to top ↑

MachineLearning

다중 분류 문제 성능평가 [기본편]

5 minute read

어떤 모델, 혹은 방법을 쓰던 분류 문제는 그 의도에 따라 다양한 성능평가 방식을 사용합니다. 사람, 고양이, 개 3개의 클래스를 분류하는 다중 분류(multi label) 예제를 통해 정리해보겠습니다. 여기에서는 가장 기본이 되는 Accuracy, Recall, Precision...

Machine Learning with Spark (Spark로 머신러닝하기)

8 minute read

스파크의 분산처리 능력을 머신러닝에 사용할 수 있습니다. 간단한 자연어 처리 예제와 함께 알아보겠습니다. 비교적 쉽게 접할 수 있는 scikit-learn, R, tensorflow와 달리 SparkML은 흔치 않지만, 나름대로의 장점이 있습니다.

Back to top ↑

NLP

Machine Learning with Spark (Spark로 머신러닝하기)

8 minute read

스파크의 분산처리 능력을 머신러닝에 사용할 수 있습니다. 간단한 자연어 처리 예제와 함께 알아보겠습니다. 비교적 쉽게 접할 수 있는 scikit-learn, R, tensorflow와 달리 SparkML은 흔치 않지만, 나름대로의 장점이 있습니다.

자연어 처리 - 한국어 띄어쓰기

3 minute read

자연어 처리(Natural Language Processing)는 데이터 사이언스의 큰 난관이자 유망주? 중 하나인데, 영어에 비해 한국어 분석은 특유의 구조적 문제와 더불어(받침의 존재, 다양한 신조어: 멍멍이-댕댕이, 잁럻겛 쓿멶 핞굵 삻람많 읽읅 숡 있읆 등) 관련 연구(가져...

Back to top ↑

deeplearning

오늘의 에러 - 180813

1 minute read

신경망 모델을 클래스로 구현해보던 중 Saver에서 에러(ValueError: No variables to save)가 발생했다.

Back to top ↑

Hive

Hive Partition 다루기

2 minute read

파티셔닝으로 데이터를 분할함으로써 쿼리가 스캔하는 데이터의 양을 제한하여 성능을 향상시킬 수 있습니다. 관리도 훨씬 편해집니다.

Hive Table 다루기

2 minute read

스파크는 하이브 메타스토어를 사용하기 때문에 하이브와 연동이 자연스럽습니다. 이번 포스트에서는 하이브 테이블의 생성, 삭제, 삽입, 변경 등을 알아보겠습니다. 하이브에는 관리형 테이블과 외부 테이블이라는 생소한? 개념이 있습니다.

Back to top ↑

git

git cheatsheet

3 minute read

초기 설정 후에는 주로 add, commit, push만 가지고 git을 써왔는데(이마저도 atom을 사용하면 클릭 몇 번으로 대체된다), 한계가 느껴져서 새로운 기능을 쓰게 될 때마다 정리를 하려고 한다.

Back to top ↑

algorithm

hackerrank - ginortS

less than 1 minute read

해커랭크에서 쉬운 문제에도 고전하는 경우가 종종 있는데, 자주자주 이렇게 푸는 습관을 가져야겠다.

Back to top ↑

data

막상 쓰려면 헷갈리는 정규표현식 모음

less than 1 minute read

쉽게 찾을 수 있는 메타 문자(예약어), 전화번호, 비밀번호, 이메일 규칙 외에 종종 사용하는 정규표현식(Regular Expression, regexp)을 모았습니다.

Back to top ↑