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 이..
Postgresql 컬럼 기본값(default) 설정
2023. 10. 5. 23:38
데이터 엔지니어링/Database
PostgreSQL 에서 컬럼을 설정할 때 기본값(default) 에 대해서 정리해보려고 한다. 기본값 (default) 이란 PostgreSQL 에서 컬럼의 Default 는 해당 컬럼에 데이터를 삽입할 때 명시적으로 값을 제공하지 않을 때 사용되는 기본값을 정의하는데 사용된다. 쉽게 말해서 어떠한 동작을 하지 않을 때 기본적으로 Default 에 명시된 값이 들어간다는 말이다. 예를 들어 Default 는 다음과 같이 설정할 수 있다. CREATE TABLE test_table ( id serial PRIMARY KEY, name VARCHAR(255) DEFAULT '아무개' ); name 에 아무런 값을 등록하지 않으면 '아무개' 라는 값이 들어가게 된다. 그리고 Default 는 다음과 같이 수..
conda 기본 명령어 정리
2023. 10. 3. 18:08
시스템/Virtual Machine
conda 를 사용하면서 기본적인 명령어에 대해서 정리해두려고 한다. 사용하면서 알아두어야할 명령어들에 대해서도 추가할 예정이다. conda 가상환경 생성 conda create -n [가상환경 이름] python=[python version] # 예시 conda create -n venv python=3.11 conda 가상환경 activate & deactivate # 가상환경 활성화 (activate) conda activate [가상환경 이름] # 가상환경 비활성화 (deactivate) conda deactivate [가상환경 이름] conda python 특정 버전 설치 conda install python=[python version] # 예시 conda install python=3.11
miniconda3 - CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
2023. 10. 3. 17:59
시스템/Virtual Machine
miniconda 를 설치하고나서 가상 환경을 생성하고 activate 하는 과정에서 다음과 같이 에러 메시지가 나왔다. CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run $ conda init Currently supported shells are: - bash - fish - tcsh - xonsh - zsh - powershell See 'conda init --help' for more information and options. IMPORTANT: You may need to close and restart your shell af..
Spark explode() 사용해서 List 로 된 컬럼을 행으로 분리하기
2023. 10. 1. 17:57
데이터 엔지니어링/Spark
Spark Dataframe 에 다음과 같이 리스트 형태로 들어간 컬럼이 있을 것이다. scala> val df = Seq(("Nam", List("A", "B", "C", "D"))).toDF("name", "grade") df: org.apache.spark.sql.DataFrame = [name: string, grade: array] scala> df.show() +----+------------+ |name| grade| +----+------------+ | Nam|[A, B, C, D]| +----+------------+ 이런 경우에 grade 라는 컬럼을 각 row 로 분리할 필요가 생길수도 있다. 이때, explode() 함수를 통해서 리스트를 각 row 로 분리해줄 수 있다. 원하는 ..
Spark User Defined Functions (UDFs)
2023. 10. 1. 17:29
데이터 엔지니어링/Spark
Spark 를 사용하다보면 UDFs 를 사용하여 새로운 column 을 만드는 경우가 많이 있다. 그래서 Spark UDFs 에 대해서 정확하게 무엇을 말하고 어떻게 사용하는 지에 대해서 정리해보려고 한다. 정리는 아래의 공식 문서를 참고해서 정리해보았다. https://spark.apache.org/docs/latest/sql-ref-functions-udf-scalar.html Scalar User Defined Functions (UDFs) - Spark 3.5.0 Documentation spark.apache.org Spark User-Defined Functions Spark User-Defined Functions (UDFs) 는 하나의 행에서 동작하는 사용자가 프로그래밍할 수 있는 루틴을 ..
Spark multi process error in macOS
2023. 9. 27. 11:26
데이터 엔지니어링/Spark
macos 에서 pyspark 를 통해 디버깅을 하던 도중 다음과 같은 에러가 발생했다. To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 23/09/27 10:36:44 WARN package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'. objc[7304]: +[__NSCFConstantString initialize] may have been in progress in..
Spark JDBC Data Source Option
2023. 9. 26. 12:32
데이터 엔지니어링/Spark
spark 를 통해 JDBC 를 통해 데이터베이스의 테이블을 불러올 때 사용하는 옵션에 대해서 정리해보려고 한다. Spark JDBC To Other Databases 해당 내용은 야래의 spark 공식 문서에서 확인할 수 있다. https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html JDBC To Other Databases - Spark 3.5.0 Documentation spark.apache.org 문서를 보면 다음과 같이 설명이 되어있다. Spark SQL 은 JDBC 를 사용해서 다른 데이터베이스들로부터 데이터를 읽을 수 있는 data source 를 포함하고 있다. 이 기능은 JdbcRDD 를 사용하는 것보다 선호된다. 그 이유는 D..