분류 전체보기 1187

[Hive] 테이블 - 스큐 (SKEW)

개요 2024.01.19 - [Hive] 테이블 - 파티션, 2024.02.02 - [Hive] 테이블 - 버켓팅 (bucketing)에 이어서 이번 글에서는 Hive 테이블의 스큐 (SKEW)에 대한 부분을 알아보려고 한다. 스큐 (SKEW) 스큐란 컬럼에 특정 데이터가 빈번하게 저장되는 경우 분리해서 저장하는 기능이다. 데이터를 디렉터리에 나눠서 저장하는 파티션과 비슷하지만, 파티션이 데이터를 크게 구분하는 용도로 사용한다면 스큐는 컬럼의 데이터를 구분할 때 사용한다. 스큐는 하나의 컬럼의 값이 특정 값에 몰려있을 때 유용하다. 예로 들어 num 컬럼에는 1부터 1000까지의 데이터가 저장되는데 주로 1, 2가 저장된다고 하자. 이 테이블을 파티셔닝하면 num=1, num=2, … , num=1000..

Hadoop EcoSystem 2024.02.07

[Pandas] DataFrame 행(row) 순회

개요 데이터를 Pandas 데이터프레임으로 처리하려고 하는데, 데이터프레임 행 전체를 순회하면서 처리해야 하는 작업이 발생했다. 데이터프레임 행 순회를 하는 방법을 간단히 정리해 둔다. 물론 데이터프레임의 크기가 클수록 순회하는 것보다 벡터화 연산으로 처리하는 것이 유리하다. 인덱싱 아래와 같은 데이터프레임이 있다고 하자. import pandas as pd df = pd.DataFrame({ '고객번호': [1001, 1002, 1003, 1004], '이름': ['둘리', '도우너', '또치', '길동'] }, columns=['고객번호', '이름']) 데이터프레임의 인덱스 정보는 index 속성으로 접근할 수 있다. for문으로 데이터프레임의 인덱스 정보를 순회하면서 loc, iloc 등을 이용해 ..

[BOJ] 11727 - 2×n 타일링 2

문제 문제 : https://www.acmicpc.net/problem/11727 양의 정수 n을 입력받아 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 10,007로 나눈 나머지를 구하여라. + 이번 글도 다른 사람 풀이를 참고한다. 점화식 n = 1일 때부터 시작해 결과를 그려보면 아래 그림과 같다. 조금 더 그려보면 아래와 같은 패턴이 반복되는 것을 확인할 수 있다. 즉, 확인한 패턴을 점화식으로 표현하면 다음과 같다. $$ counts(n) = counts(n - 1) + 2counts(n - 2) $$ 이전 값 하나만 참조할 뿐 아니라, 여러 값을 참조하는 경우도 충분히 있을 수 있다……. 생각해보면 피보나치 함수도 그렇다. 구현 이전에 계산한 값을 반복적으로 확인해야 하..

Algorithm/백준 2024.02.05

[Hive] 테이블 - 버켓팅 (bucketing)

개요 2024.01.19 - [Hive] 테이블 - 파티션에 이어서 이번 글에서는 hive 성능에 관련이 있는 버켓팅 개념에 대해서 간단히 이해해보려고 한다. bucketing bucketing의 기본 아이디어는 특정 컬럼에 대한 HASH 값을 기준으로 파일을 나눠서 저장하는 것이다. 달리 표현하면, 특정 컬럼의 값을 해시 처리한 후 지정한 수의 파일로 분리해서 저장하는 것이다. bucketing을 사용하면 쿼리의 성능을 향상시킬 수 있다. 예로 들어 WHERE 조건에 버킷 컬럼을 사용하거나, 테이블 JOIN 시 bucket 기준 컬럼을 사용하면 해당 키의 해시값에 해당하는 버킷만 데이터를 스캐닝할 수 있기 때문이다. 테이블 버켓팅 설정 버켓팅은 테이블 생성 시 CLUSTERED BY ~ INTO n B..

Hadoop EcoSystem 2024.02.02

[BOJ] 1463 - 1로 만들기

개요 2024.01.31 - [Alogrithm] 동적 계획법 (Dynamic Programming) 이란에서 동적 계획법의 개념과 접근 방식에 대해 간단히 살펴보았는데, 아무래도 관련 문제를 직접 해결해보는 편이 더 익숙해질 것 같아 문제를 풀어보려고 한다. 다만 이번 글에서는 다른 사람의 풀이(https://beginnerdeveloper-lit.tistory.com/81)를 참고한다. 🤔 비슷한 문제로 https://school.programmers.co.kr/learn/courses/30/lessons/154538 가 있는데, 이 문제는 직접 풀어보려고 한다. 문제 문제 : https://www.acmicpc.net/problem/1463 정수 X에 사용할 수 있는 연산은 세 가지이다. X가 3으..

Algorithm/백준 2024.02.01

[Alogrithm] 동적 계획법 (Dynamic Programming) 이란

동적 계획법 동적 계획법 (Dynamic Programming)이란 복잡한 문제를 간단한 여러 문제로 나누어 푸는 방법을 말한다. 부분 문제가 반복(Overlapping Subproblem)되거나 최적 부분 구조 (Optimal Substructure)를 가진 알고리즘을 효율적으로 해결할 때 사용한다. 최적 부분 구조 (Optimal Substructure) 답을 구하기 위해 수행한 계산을 반복해야 하는 문제의 구조 동적 계획법은 알고리즘이라기보다는 어떤 문제를 풀 때 그 문제를 더 작은 문제의 연장선으로 생각하고 기존에 구한 해를 활용하는 방법을 총칭한다고 이해하는 편이 좋다. 접근 방식 1. 큰 문제를 작은 문제로 표현할 수 있다. 예로 들어 피보나치는 아래와 같이 표현할 수 있다. $$ \begin..

Algorithm 2024.01.31

[GitLab] git cli로 Merge Request 생성

개요 로컬 GitLab 레포지터리에서 발생한 수정 사항을 원격지에 Push 하고 싶다. Branch 전략에 의해 master/main 브랜치에 직접 push하는 게 아니라 Merge Request를 통해 수정 사항을 반영하려고 하는데, 이 과정을 자동화할 수 있었으면 한다. 혹시 Git CLI 등으로 MR을 생성할 수 있는지, 어떻게 하는지 정리한다. git push -o 구글링과 공식 문서에 의하면 Git 2.10 이상 GitLab 11.10부터 push 명령에 옵션을 추가하여 MR을 생성할 수 있다고 한다. git push --push-option= # 또는 git push -o 사용할 수 있는 옵션은 여러가지인데 MR 생성과 설정에 대한 기본적인 옵션 정도만 살펴봤다. git push \ -o me..

Git | GitLab 2024.01.30

[AWS] cli - AWS 제공 EC2 인스턴스 타입 목록 조회 - 2

개요 2024.01.26 - [AWS] cli - AWS 제공 EC2 인스턴스 타입 목록 조회 - 1에 이어 AWS cli로 AWS가 제공하는 EC2 인스턴스 타입 목록을 조회하는 방법을 정리한다. ec2 describe-instance-type ec2 describe-instance-type 명령어는 제공되는 인스턴스 타입의 세부 정보를 반환한다. aws ec2 describe-instance-types 옵션 없이 사용하면 현재 리전에서 제공되는 모든 인스턴스 타입에 대한 세부 정보가 나열된다. 따라서 인스턴스 타입만 나열할 때는 --query 옵션을 이용한 출력 필터링이 필요하다. aws ec2 describe-instance-types \ --query InstanceTypes[].InstanceT..

AWS 2024.01.29

[AWS] cli - AWS 제공 EC2 인스턴스 타입 목록 조회 - 1

개요 AWS에서 제공하고 있는 EC2 인스턴스 타입의 목록이 필요하다. AWS cli나 Linux 명령어 등을 통해 목록을 얻는 방법에 대해 정리해 둔다. 이 글에서는 여러 방법 중 ec2 describe-instance-type-offerings 명령어 대해 정리한다. ec2 describe-instance-type-offerings ec2 describe-instance-type-offerings 명령어는 제공되는 모든 인스턴스 타입의 목록을 반환한다. region 또는 az를 지정하여 특정 위치에서 제공되는 인스턴트 타입의 목록을 확인할 수 있는데, 만약 목록을 확인할 위치 정보를 지정하지 않으면 현재 region을 목록을 확인할 위치로 취급한다. 현재 리전에서 제공하는 인스턴스 유형 목록 확인 옵..

AWS 2024.01.26

[Python] 콜백 함수 (Callback)

개요 프로그래밍 업무를 하다 보면 콜백함수란 단어를 간혹 듣게 되는데, 개인적으로 개념을 잘 이해하고 있는 것 같진 않아 이번 기회에 정리해보려고 한다. Callback 프로그래밍에서 콜백 또는 콜백함수란 다른 코드의 인수로 넘겨주는 실행 가능한 코드를 말한다. 일반적으로 함수는 사용자 정의 코드에서 호출하는데, Callback은 이와 반대로 함수 내에서 사용자 정의 코드를 호출하게 된다. 호출 방향이 일반적인 경우와 반대이기 때문에 Call + Back이라고 일컬어진다. 콜백함수를 다른 코드로 전달할 때는 콜백 함수의 포인터, 람다 함수의 형태로 전달하며 필요에 따라 즉시 실행하거나 나중에 실행할 수 있다. 예시 간단한 예시로 콜백함수의 구현을 알아본다. 아래와 같이 입력 받은 숫자가 양수인지, 음수인..

Python 2024.01.25