Postgresql auto increment 적용하기
2024. 2. 16. 19:13
데이터 엔지니어링/Database
Mysql 에서는 auto_increment 라는 속성을 부여해주면 자동으로 증가하게 만들어줄 수 있다. Postgres 에서는 auto_increment 라는 속성을 부여할 수 없기 때문에 다른 방법을 통해서 증가하게 만들어주어야 한다. 그래서 postgres 의 auto increment 에는 어떤 방법들이 있는지 정리해보려고 한다. Sequence 객체를 사용해서 auto increment 하기 postgres 에는 Sequence 라고 하는 number generator 가 있다. 더 쉽게 말해서 순차적인 값을 생성해주는 객체라고 생각하면 된다. Sequence 는 다음과 같이 명령어를 통해 생성할 수 있다. CREATE SEQUENCE seq_user_id INCREMENT 1 START 1 M..
Spark explode() 함수 사용시 주의할 점
2024. 2. 11. 18:16
데이터 엔지니어링/Spark
spark explode() 함수는 리스트 타입의 컬럼에서 각각의 element 를 하나의 row 로 펼쳐주는 기능을 한다. explode() 함수의 사용 방법에 대해서는 다음과 같이 이전에 정리해두었다. https://jaynamm.tistory.com/entry/Spark-explode-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%84%9C-List-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0 Spark explode() 사용해서 List 로 된 컬럼을 행으로 분리하기 Spark Dataframe 에 다음과 같이 리스트 형태로 들어간 컬럼이 있을 것이다. scala> val df = Seq(("Nam", List("A"..
프로그램과 프로세스의 차이
2024. 2. 11. 17:04
컴퓨터 과학/개념정리
CS 를 다시 공부하면서 프로그램과 프로세스에 대해서 정확히 설명하지 못했고 (반성하자) 프로그램과 프로세스의 차이에 대해서 제대로 알고 있지 않다는 생각이 들어 제대로 이해하고자 공부한 내용을 정리해보려고 한다. 프로그램 (Program) 프로그램이란 흔히 소프트웨어라고 하는 애플리케이션들을 말한다 예를 들어, 카카오톡이나 계산기 등을 프로그램이라고 할 수 있다. 조금 더 자세하게 설명하자면 컴퓨터가 실행할 수 있는 명령의 집합이자 Disk 에 저장되는 정적인 엔티티라고 할 수 있다. 변함없이 디스크에 저장되어있기 때문에 정적이라고 표현한다. 프로세스 (Process) 프로세스란 프로그램의 실행을 의미한다. 따라서, 동적인 엔티티라고 할 수 있다. 프로세스는 프로그램이 실행될 때 운영 체제에 의해 생성..
airflow default_args error - Invalid arguments were: **kwargs: {'provide_context': False}
2024. 2. 7. 14:38
데이터 엔지니어링/Airflow
에러 발생 airlfow 를 사용하다가 아래와 같은 에러가 발생했다. airflow.exceptions.AirflowException: Invalid arguments were passed to _PythonDecoratedOperator (task_id: check_steps__1). Invalid arguments were: **kwargs: {'provide_context': False} 에러 내용은 Invalid arguments were: **kwargs: {'provide_context': False} 라는 내용으로 default_args 에 설정해준 provide_context 의 값이 False 되어있어서 발생한 에러로 보였다. 에러가 났을 때 dag default_args 의 내용은 다음..
airflow Default Arguments
2024. 2. 7. 11:27
데이터 엔지니어링/Airflow
airflow 에서 DAG 를 생성할 때 사용되는 default arguments 에 대해서 정리해보려고 한다. Default Arguments default_args 에 대해서 이해하기 위해 airflow concept 에서 다음과 같이 확인할 수 있었다. https://airflow.apache.org/docs/apache-airflow/2.6.2/core-concepts/dags.html#default-arguments DAGs — Airflow Documentation airflow.apache.org 설명을 해석해보면, DAG 안에 있는 많은 Operator 들이 같은 설정을 해주는 경우가 있는데 모든 Operator 들에게 개별적으로 지정하는 대신 DAG 를 생성할 때 default_args ..
airflow Dynamic Task Mapping
2023. 12. 28. 14:27
데이터 엔지니어링/Airflow
airflow 를 사용하면서 하나의 task 안에서 여러 개의 작업이 수행될 때 각 작업의 상태를 확인하거나 모든 작업에 동일한 값을 넘겨주고 싶은 경우가 있다. 이럴 때 airflow 제공하는 것이 airflow Dynamic Task Mapping 이라는 기능이다. 이 기능은 airflow 2.3.0 버전에서 새롭게 추가된 기능이라고 한다. 이 기능 외에도 다양한 기능이 추가된 것으로 알고 있다. airflow 2.3.0 의 release note 는 아래에서 확인할 수 있다. https://airflow.apache.org/docs/apache-airflow/stable/release_notes.html#airflow-2-3-0-2022-04-30 Release Notes — Airflow Docu..
aws cli error - AttributeError: module 'lib' has no attribute 'X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT'
2023. 11. 25. 18:53
Cloud/AWS
awscli 를 설치하고나서 aws --version 명령어를 통해 버전을 확인하려고 하니 다음과 같이 에러가 발생했다. $ aws --version Traceback (most recent call last): File "/opt/homebrew/bin/aws", line 19, in import awscli.clidriver File "/opt/homebrew/Cellar/awscli/2.13.38/libexec/lib/python3.11/site-packages/awscli/clidriver.py", line 21, in import botocore.session File "/opt/homebrew/Cellar/awscli/2.13.38/libexec/lib/python3.11/site-packag..
python urllib 사용해서 URL 다루어보기
2023. 10. 21. 19:39
프로그래밍 언어/Python
python 으로 개발하면서 URL 을 다루게 되면서 어떻게 URL 내에서 path 만 가져와야하고 parameter 를 어떻게 가져와야하고 query string 은 어떻게 추가해야하는지에 대한 고민을 했던 적이 있다. 정말 단순하게 생각했을 때 URL 문자열 알에 들어있는 '/' 나 '?' 또는 '&' 등의 문자를 통해 split 해서 가져오면 되지 않을까? 하는 생각이 들었다. 하지만 python urllib 이라는 라이브러리를 통해서 정말 쉽게 URL 을 다룰 수 있다는 것을 알게 되었고 어떻게 사용할 수 있는지 정리해보려고 한다. 먼저 urllib 을 사용해보기 위해서 다음과 같이 URL 이 있다고 가정하고 사용해보려고 한다. 이 URL 은 내가 지금 블로그에 글을 쓰고 있는 페이지의 URL 이..