Spark

Spark Connect 알아보기

3 minute read

Spark 3.4 버전에서 Spark Connect가 추가되었습니다. 간단히 정리하자면 Spark Connect는 기존 방식에서는 합쳐져 있던 Spark Driver와 Client의 역할을 명시적으로 분리해서 여러 사용자가 Spark Cluster를 공유할 때 발생하는 문제(멀...

Spark Cluster Architecture와 Application Lifecycle

2 minute read

스파크 클러스터의 아키텍처와 스파크 어플리케이션 작업 흐름에 대해 정리해봅니다. 내가 제출한 작업이 스파크 클러스터에서 어떻게 시작되고 종료되는지 알아보고 싶은 분에게 추천합니다. 이번엔 코드는 없습니다.

Spark - 까다로운 텍스트 파일 읽기

1 minute read

구분자 두 개와 함께 들어올 수도 있고 안들어올 수도 있는 형식에 맞지 않는 헤더를 가진 텍스트 파일 처리 - DataFrameAPI로는 조금 까다로운 파일을 textFile 과 rdd의 map 을 이용해서 처리해봅니다.

spark write parquet with null

1 minute read

spark sql로 작업을 하다보면 auto schema 때문에(혹은 연산을 거친 후에) 형식이 바뀌는 경우가 발생하는데, 갑자기 튀어나오는 Null이 종종 문제가 됩니다. 파케이로 저장하면 Null 형식을 지원하지 않는다고 하면서 에러를 뿜거든요.

Zeppelin notebook shortcuts

less than 1 minute read

파이썬에 주피터 노트북이 있다면, 스파크에는 제플린 노트북이 있습니다. 이번에는 제플린 노트북에서 생산성을 극대화시킬 단축키에 대해 정리해보겠습니다. Zeplin 아니고 Zeppelin

Spark with JDBC

1 minute read

jdbc driver를 이용해서 spark로 db 데이터를 읽거나 쓸 수 있습니다.

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 ↑

blog

무수히 많은 탭에서 벗어나게 해줄 Browser, Arc 를 소개합니다.

2 minute read

어떤 브라우저를 쓰시나요? Chrome, Safari, Edge, Brave, Whale 등 많은 브라우저가 있죠. 저는 크롬을 주로 쓰지만, 다른 브라우저를 써봐도 다 비슷해 보이더라고요. 상단 탭 구조 언저리에 주소창이 있고, 즐겨찾기 해놓은 페이지가 있고, 우상단에는 익스텐...

개발자가 IDE를 반드시 사용해야하는 이유

1 minute read

장인은 도구를 탓하지 않는다 라는 말이 있습니다. 장인이 물론 좋지 않은 도구로도 일 할 수 있을 겁니다. 그런데 장인이 생산성을 높이는 멋진 도구를 두고 굳이 낡은 도구로 일할까요? 이번에는 IDE에 대해 얘기해보고자 합니다.

팀에 시니어가 없는 주니어, 어떻게 성장해야 하나요?

1 minute read

많은 주니어, 신입의 공통된 어려움인 것 같습니다. 정답은 없고 뻔한 얘기일 수도 있지만, 제가 해온 방법을 공유해보려고 합니다. 시니어의 기준은 다르겠지만, 여기서는 무언가(기술, 비즈니스 매너, 업무)를 보고 배울 사람이라고 정의하겠습니다.

Google Analytics 조회수 분석으로 기술 블로그 콘텐츠 계획하기

4 minute read

지난 다짐글을 돌아보니 간단한 다짐, 앞으로 쓸 주제 언급 정도의 간단한 글을 썼는데, 이번에는 구체적으로 어떤 글을 쓸지 계획해봅니다. 조회수 분석이라고 붙이긴 했지만, 거창한 건 아니고 어떤 글을 쓰는 게 좋을지 참고하는 용도로 GA를 살짝 이용해봤습니다.

6개월 간의 글또 5기 회고 - 나는 글을 왜 쓸까?

1 minute read

이번 글은 글또 5기를 회고하는 글입니다. 글또 5기를 시작하며 글또 다짐글을 시작으로 총 9개의 글을 썼습니다. 사실 다짐글은 아주 짧은 글이어서 포스팅이라 할만한 글은 8개가 되겠네요.

2020년 회고 및 21년 다짐

2 minute read

상반기 회고를 애매하게 8월에 쓰고, 1월이 되어서야 2020년 회고 및 새해 다짐을 해봅니다.

2020년 상반기 회고

1 minute read

이번 글은 2020년 1월부터 8월까지 한 일과, 올해 앞으로 할 일들을 정리하는 글입니다.

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

1 minute read

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

Jekyll 블로그 첫 포스트

less than 1 minute read

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

Back to top ↑

airflow

Slack SDK로 메세지 보내기 (with Airflow)

1 minute read

Airflow 버전에 따라서 의존성 때문에 slack operator 쓰기가 영 불편합니다. 그래서 python slack sdk로 slack operator를 대체하는 방법에 대해 정리해봅니다.

[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 ↑

CS

SOLID with Python - Dependency Inversion Principle

3 minute read

일반적으로 객체 지향 프로그래밍(OOP)에서 상위 계층(혹은 모듈)은 하위 계층의 구현에 의존적입니다. 계층 간의 의존성이 높아질수록(tight coupling) 코드의 유지, 변경에 어려움이 생기는데, 의존관계 역전 원칙(DIP)을 적용하여 결합을 느슨하게(loosely coup...

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 ↑

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 ↑

docker

도커와 쿠버네티스를 이해하기 위한 로드맵 & 가이드

2 minute read

도커, 컴포즈까지는 이제 좀 익숙하게 쓰는데, 쿠버네티스는 뭔가 개념도 어렵고 이해가 잘 안 되더라구요. 좋은 공부 자료를 찾아서 조금 숨통이 트이게 되었는데, 같은 어려움을 가진 분들께 공유하고자 합니다.

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

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 ↑

Regression

추천 시스템 - SVD

3 minute read

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

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

3 minute read

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

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

2 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 ↑

algorithm

hackerrank - ginortS

less than 1 minute read

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

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 ↑

data

데이터 파이프라인과 아키텍처 변천사

5 minute read

데이터 파이프라인(data pipeline)은 말 그대로 파이프처럼 한 데이터 처리 단계의 출력이 다음 단계의 입력이 되는 식으로 데이터의 흐름이 연결되는 구조를 말합니다. 데이터 파이프라인을 구축하는 아키텍처도 시간이 흐르면서 바뀌어왔는데요, 이번에는 원시적인 데이터 처리 아키텍...

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

less than 1 minute read

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

Back to top ↑

kubernetes

도커와 쿠버네티스를 이해하기 위한 로드맵 & 가이드

2 minute read

도커, 컴포즈까지는 이제 좀 익숙하게 쓰는데, 쿠버네티스는 뭔가 개념도 어렵고 이해가 잘 안 되더라구요. 좋은 공부 자료를 찾아서 조금 숨통이 트이게 되었는데, 같은 어려움을 가진 분들께 공유하고자 합니다.

Back to top ↑

pytest

Back to top ↑

test

Back to top ↑

sdk

Slack SDK로 메세지 보내기 (with Airflow)

1 minute read

Airflow 버전에 따라서 의존성 때문에 slack operator 쓰기가 영 불편합니다. 그래서 python slack sdk로 slack operator를 대체하는 방법에 대해 정리해봅니다.

SDK를 쓰는 이유와 aws boto3

1 minute read

이번에는 콘솔을 통해 클라우드 자원을 관리할 수 있음에도 SDK를 통해 코드로 하는 이유를 정리해봅니다. 마우스 클릭 몇 번으로 제어가 가능한데, 왜 코드로 관리할 수 있도록 지원하는 걸까요?

Back to top ↑

git

git cheatsheet

3 minute read

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

Back to top ↑

shortcut

Zeppelin notebook shortcuts

less than 1 minute read

파이썬에 주피터 노트북이 있다면, 스파크에는 제플린 노트북이 있습니다. 이번에는 제플린 노트북에서 생산성을 극대화시킬 단축키에 대해 정리해보겠습니다. Zeplin 아니고 Zeppelin

Back to top ↑

zeppelin

Zeppelin notebook shortcuts

less than 1 minute read

파이썬에 주피터 노트북이 있다면, 스파크에는 제플린 노트북이 있습니다. 이번에는 제플린 노트북에서 생산성을 극대화시킬 단축키에 대해 정리해보겠습니다. Zeplin 아니고 Zeppelin

Back to top ↑

scala

Back to top ↑

CleanCode

SOLID with Python - Dependency Inversion Principle

3 minute read

일반적으로 객체 지향 프로그래밍(OOP)에서 상위 계층(혹은 모듈)은 하위 계층의 구현에 의존적입니다. 계층 간의 의존성이 높아질수록(tight coupling) 코드의 유지, 변경에 어려움이 생기는데, 의존관계 역전 원칙(DIP)을 적용하여 결합을 느슨하게(loosely coup...

Back to top ↑

RPC

Back to top ↑

Thrift

Back to top ↑

aws

SDK를 쓰는 이유와 aws boto3

1 minute read

이번에는 콘솔을 통해 클라우드 자원을 관리할 수 있음에도 SDK를 통해 코드로 하는 이유를 정리해봅니다. 마우스 클릭 몇 번으로 제어가 가능한데, 왜 코드로 관리할 수 있도록 지원하는 걸까요?

Back to top ↑

slack

Slack SDK로 메세지 보내기 (with Airflow)

1 minute read

Airflow 버전에 따라서 의존성 때문에 slack operator 쓰기가 영 불편합니다. 그래서 python slack sdk로 slack operator를 대체하는 방법에 대해 정리해봅니다.

Back to top ↑