분류 전체보기 1187

[프로그래머스] 롤케이크 자르기

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/132265 철수는 여러 토핑이 일렬로 올려진 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 한다. 두 사람은 조각의 크기보다 토핑의 종류를 더 중요하게 생각해, 각 조각에 올라간 토핑의 가짓수가 동일하면 공평하게 나눈 거라 생각한다. 예로 들어, 롤케이크에 4가지 종류의 토핑이 올라가 있고 그 토핑을 1, 2, 3, 4와 같은 번호로 표시했을 때 롤케이크의 토핑은 [1, 2, 1, 3, 1, 4, 1, 2]라고 표현할 수 있다. 이 롤케이크를 공평하게 나눈 경우는 [1, 2, 1, 3], [1, 4, 1, 2] 또는 [1, 2, 1, 3, 1], [4, 1, 2]가 될 ..

Algorithm 2024.01.24

[Helm] Release 정보 확인

개요 Kubernetes 환경에서 Helm Release로 애플리케이션을 배포했는데, Release가 어떤 value로 배포되었는지 등의 정보를 확인하고 싶다. 방법을 적어둔다. helm get Helm Release의 정보를 확인하고 싶을 떄는helm get 명령어를 사용할 수 있다. get 명령어에 정보를 확인할 release를 지정하여 사용한다. helm get values 확인 Helm release를 배포할 때 사용한 value 값을 확인한다. helm get values 배포 리소스 확인 Helm Release로 인해 생성된 쿠버네티스 객체 정의를 확인한다. helm get manifest Helm Chart templete과 values.yaml이 결합된 yaml 정의 문서를 확인할 수 있다..

Kubernetes 2024.01.23

[Trino/Hive] 파티션 저장된 S3 데이터 쿼리

개요 2023.03.30 - [Trino/Hive] AWS S3 쿼리하기에서 Hive-connector를 이용해 S3 데이터를 Trino로 쿼리 하는 방법을 정리했다. 이번 글에서는 아래와 같은 구조로 저장된 S3 데이터를 Trino로 쿼리 하되, 데이터 조회 속도 개선을 위해 테이블 파티션을 사용하고자 한다. s3://text_bucket/data/page_views/year=2023/month=12/day=10/1.parquet s3://text_bucket/data/page_views/year=2023/month=12/day=11/1.parquet s3://text_bucket/data/page_views/year=2023/month=12/day=12/1.parquet s3://text_bucket..

Trino 2024.01.22

[Hive] 테이블 - 파티션

개요 2024.01.17 - [Hive] 데이터베이스, 2024.01.18 - [Hive] 테이블 - 개념 및 유형에 이어서 이번 글에서는 Hive 테이블의 파티션 개념에 대해 정리한다. 파티션 Hive는 디렉터리 단위로 데이터를 읽기 때문에 데이터가 많아질수록 속도가 느려진다. 이를 방지하기 위해 데이터를 하위 폴더로 분리해서 저장하는 파티션 개념을 사용한다. 테이블 생성 시 PARTITIOND BY절로 기준 컬럼 정보를 제공하면 디렉터리 단위로 데이터가 생성되며, 데이터 조회 시 WHERE 조건절에서 사용할 수 있다. 즉, SELECT 시 읽는 데이터의 양을 줄여서 처리 속도를 개선할 수 있다. 사용 예시) -- 날짜 기준 파티션 생성 CREATE TABLE tbl( col1 STRING ) PART..

Hadoop EcoSystem 2024.01.19

[Hive] 테이블 - 개념 및 유형

개요 2024.01.17 - [Hive] 데이터베이스에 이어 이번 글에서는 Hive 테이블 개념에 대해 정리한다. 테이블 Hive에서 테이블은 HDFS에 저장된 파일과 디렉터리 구조에 대한 메타 정보라고 할 수 있다. 실제 파일의 구조에 대한 정보와 저장 위치, 입력 형식, 출력 형식, 파티션 정보 등 여러 정보를 포함한다. 테이블은 CREATE 문으로 생성할 수 있다. CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [column_constraint_specification] [COMM..

Hadoop EcoSystem 2024.01.18

[Hive] 데이터베이스

개요 빅데이터 관련 프로젝트에 투입되어 있으면서 파티션이라는 개념을 듣게 되었는데, 관련하여 데이터베이스 개념부터 잡아야 할 것 같아 정리한다. 데이터베이스 Hive에서 데이터베이스는 테이블 이름을 구별하기 위한 네임스페이스 역할을 한다. 또한 테이블 데이터의 기본 저장 위치를 제공하는데, 만약 데이터베이스 생성 시 저장 위치를 지정하지 않으면 기본값으로 설정된다. # 데이터 웨어하우스 기본 위치 hive.metastore.warehouse.dir = /user/hive/warehouse # Hive 데이터베이스 기본 위치 /user/hive/.db # Hive 테이블 기본 위치 /user/hive/.db/ 데이터웨어하우스, 데이터베이스, 테이블의 기본 위치는 위와 같다. 데이터베이스 생성 Hive 데이..

Hadoop EcoSystem 2024.01.17

[Algorithm] 소수 판별

개요 2022.06.18 - [Algorithm] 에라토스테네스의 체에서 정리한 에라토스테네스의 체 알고리즘은 소수를 찾는 방법으로 유명하다. 다만 범위 내의 모든 소수를 찾는 방법이기 때문에, 어떤 수가 소수인지 아닌지를 확인할 때는 효율적이지 않을 수 있다. 이 글에서는 어떤 수를 입력으로 받아, 그 수가 소수인지 아닌지를 판별하는 방법을 적어둔다. 접근 소수는 1과 자기 자신을 제외한 어떤 수로도 나누어 떨어지지 않는 수를 말한다. 어떤 수가 소수인지 아닌지 판별하기 위해서는 약수의 성질을 먼저 생각해봐야 한다. 약수는 제곱근을 기준으로 대칭을 이룬다. 따라서 어떤 수의 약수를 찾을 때 제곱근까지만 확인하면 나머지 약수는 자연스럽게 구할 수 있다. 즉, 어떤 수가 소수인지 아닌지를 판별하고 싶을 때..

Algorithm 2024.01.16

[Algorithm] 진수 변환

개요 Python으로 진수 변환하는 방법에 대해서는 2022.06.08 - [BOJ] 2998 - 8진수에서 살펴보았었는데, 10진수를 2, 8, 16 진수 외의 다른 진수의 수로 변환할 때는 직접 변환 함수를 구현해야 한다. 이 글에서 구현해보려고 한다. 진수 변환 방법 수학적으로 진수를 변환하는 방법은 다음과 같다. 1. 어떤 수를 진수로 나눠 몫과 나머지를 구한다. 2. 몫이 나누어지지 않을 때까지 연산을 반복한다. 3. 나머지를 역순으로 읽는다. 이 과정을 Python 코드로 구현한다. 코드 구현 - 재귀함수 진수 변환은 재귀함수를 이용해 간단히 구현할 수 있다. 1. 자릿값을 초기화한다. tmp = string.digits + string.ascii_uppercase 2. 숫자를 나눈 몫과 나머..

Algorithm 2024.01.15

[Airflow/Celery Flower] worker autoscale 조정

개요 2023.07.19 - [Airflow] Concurrency 설정에서 Airflow, Celery Worker의 동시성에 대한 설정들을 확인해 보았다. 이 글에서는 Celery Flower에서 관련 설정을 확인하고 조정하는 방법을 적어둔다. 설정 확인 Celery Worker의 Concurrency, Autoscale과 같은 정보는 Pool 탭에서 확인할 수 있다. worker autoscale 설정 조정 Pool 탭 오른편에서 볼 수 있는 Pool size control의 Min/Max autoscale로 worker autoscale 설정을 조정할 수 있다. 원하는 설정을 입력 후 Apply 버튼을 누르면, 상단에 반영 성공이라는 메세지를 확인할 수 있다. 그리고 화면을 새로고침 하면 변경된 ..

Apache Airflow 2024.01.12

[PostgreSQL] DATABASE 강제 DROP

개요 Database를 복구하다가 문제가 생겼었는데, 복구한 데이터베이스를 지우고 다시 복구하려고 한다. 그런데 DATABASE에 연결한 사용자가 있어 DROP에 실패했다. 강제로 DATABASE를 삭제하는 방법을 적어둔다. DROP DATABASE 데이터베이스를 삭제할 때는 DROP 문을 사용한다. DROP 문은 되돌릴 수 없기 때문에 신중하게 사용해야 한다. DROP DATABASE db_name DROP DATABASE IF EXISTS db_name IF EXESTS를 사용하면 삭제할 데이터베이스가 존재하지 않아서 발생하는 오류를 방지할 수 있다. 데이터베이스 강제 삭제 삭제를 수행하는 사용자가 삭제할 데이터베이스를 사용하고 있는 경우도 포함해서, 삭제하려고 하는 데이터베이스에 연결된 세션이 있으..

Database 2024.01.11