분류 전체보기 1191

[aws cli] EC2 - TAG 필터링

개요 AWS CLI 관련해서 2022.09.11 - [aws cli] 다중 조건 필터링 2022.09.26 - [JMESPath] JSON 쿼리 기본 - 1 2022.09.27 - [JMESPath] Projections 2022.09.28 - [JMESPath] JSON 쿼리 기본 - 2 등의 글로 정리를 했었는데, 아무래도 TAG를 이용해 필터링을 할 때마다 헷갈려서 예시로 정리해두려고 한다. 명령어는 ec2 describe-instances 기준으로 작성한다. --filter 특정 TAG 키-값으로 필터링 aws ec2 describe-instances \ --filter Name=tag:,Values= # 값이 여럿인 경우 (OR) aws ec2 describe-instances \ --filte..

AWS 2022.11.28

[Airflow] trigger 시도 시 DagRunAlreadyExists: A Dag Run already exists for dag id at {execution_date} with run id

개요 모든 Task에 대해 clear 처리한 DAG를 다시 실행시키고자 trigger 명령을 사용했다. airflow dags trigger \ -r scheduled__2022-11-12T00:00:00+00:00 \ test_dag 하지만 아래와 같은 DagRunAlreadyExists 에러가 발생하면서 트리거가 되지 않았다. Traceback (most recent call last): File "/opt/airflow/conda/bin/airflow", line 8, in sys.exit(main()) File "/opt/airflow/conda/lib/python3.7/site-packages/airflow/__main__.py", line 48, in main args.func(args) Fi..

[Python] NumPy - 기술 통계 2

개요2022.11.25 - [Python] NumPy - 기술 통계 1에 이어서 기술 통계 관련 함수를 마저 정리한다.   최댓값과 최솟값데이터 중에서 가장 큰 값과 작은 값인 최댓값과 최솟값은 max/min 함수로 찾는다.x = np.array([18, 5, 10, 23, 19, -8, 10, 0, 0, 5, 2, 15, 8, 2, 5, 4, 15, -1, 4, -7, -24, 7, 9, -6, 23, -13])x.max(), x.min()# 실행 결과(23, -24)   중앙값데이터를 크기 순으로 정렬했을 때 가운데에 있는 수를 중앙값이라고 한다. 만약 데이터의 수가 짝수이면 가운데에 있는 두 수의 평균을 의미한다.np..

[Python] NumPy - 기술 통계 1

기술 통계 NumPy는 데이터 집합에 대한 통계를 계산하는 함수를 제공하는데, 이를 기술 통계(descriptive statistics)라고 한다. 데이터의 개수(count) 평균(mean, average) 분산(variance) 표준 편차(standard deviation) 최댓값(maximum) 최솟값(minimum) 중앙값(median) 사분위수(quartile) 데이터의 수 데이터의 수는 데이터의 길이를 반환하는 len 함수로 구한다. x = np.array([18, 5, 10, 23, 19, -8, 10, 0, 0, 5, 2, 15, 8, 2, 5, 4, 15, -1, 4, -7, -24, 7, 9, -6, 23, -13]) len(x) # 실행 결과 26 표본 평균 일반적으로 의미하는 평균을 ..

[Airflow] backfill - KeyError: TaskInstanceKey 에러 발생 시

현상 이전 시점의 데이터를 다시 처리해야 하는 일이 발생해서 2022.11.14 - [Airflow] backfill - 스케쥴 시점이 지나간 DAG 실행하기에서 알아봤던 backfill을 시도했다. 하지만 예상과 다르게 아래와 같이 KeyError: TaskInstanceKey 에러가 발생하며 backfill에 실패했다. Traceback (most recent call last): File "/opt/conda/bin/airflow", line 8, in sys.exit(main()) File "/opt/conda/lib/python3.8/site-packages/airflow/__main__.py", line 40, in main args.func(args) File "/opt/conda/lib/p..

[Airflow] Trigger

Trigger Airflow는 기본적으로 스케쥴링을 통해 Dag를 실행할 수 있는데, 스케쥴링을 통하지 않고 즉시 DAG run을 만들어 실행하는 방법을 Trigger라고 한다. Trigger는 Web UI 또는 CLI를 통해 실행할 수 있다. Web UI DAG의 오른쪽 상단의 실행 버튼을 클릭하여 트리거할 수 있다. Trigger DAG를 선택하면 매개변수 없이 실행한다. 만약 전달해야 하는 매개변수가 있다면 Trigger DAG w/ config를 선택한 후, JSON 형식으로 전달할 데이터를 작성한다. CLI CLI로 트리거할 때는 Web UI를 사용할 때와 다르게 실행 시점을 지정할 수도 있다. airflow dags trigger [-h] [-c CONF] [-e EXEC_DATE] [-r R..

Apache Airflow 2022.11.23

[AWS] 와일드카드 패턴으로 S3 객체 검색

개요 일반적으로 AWS CLI를 이용해 S3에 저장된 객체를 확인할 때는 리눅스의 ls 명령과 비슷하게 aws s3 ls 명령을 사용한다. 하지만 리눅스 ls 명령을 사용할 때처럼 와일드카드를 이용해 파일을 검색하려고 하면 아무것도 검색되지 않는다. aws s3 ls s3://my-bucket/folder/*myfile* 와일드카드가 지원되지 않기 때문인데, 이를 대신할 수 있는 방법을 정리해둔다. grep으로 필터링 가장 간단한 방법은 grep 명령을 이용해 출력을 필터링하는 방법이다. aws s3 ls s3://my-bucket/folder/ | grep myfile --include, --exclude 옵션으로 필터링 cp, mv, rm, sync와 같은 S3 명령에는 결과를 필터링할 수 있는 --..

AWS 2022.11.22

[Python] NumPy - 배열의 연산 2

개요 2022.11.19 - [Python] NumPy - 배열의 연산 1에 이어 배열의 연산 관련된 부분을 마저 정리한다. 차원 축소 연산 행렬에서 하나의 행에 있는 원소를 하나의 데이터 집합으로 보고 최댓값 또는 최솟값, 평균값 등을 구하면 결괏값으로 각 행에 대한 하나의 숫자, 1차원 벡터가 구해진다. 이러한 연산을 차원 축소(dimension reduction) 연산이라고 한다. NumPy는 다음과 같은 차원 축소 연산 함수를 지원한다. min/max : 배열의 최소값/최대값 x = np.arange(5) x.min(), x.max() # 실행 결과 (0, 4) argmin, argmax : 배열의 최솟값/최댓값의 위치 x = np.array([4, 2, -1, 3]) x.argmin(), x.a..

[Git] rebase - 브랜치 base 재지정

Rebase 두 개의 공통 base를 가진 브랜치에서 한 브랜치의 base를 다른 브랜치의 최신 커밋으로 옮기는 작업이다. 문자 그대로 base를 다시 설정하는 작업이다. 브랜치를 합치는 방법 중 하나이기도 하다. 장단점 장점 1. 공유하고 있는 브랜치의 최신 변경 이력을 즉시 반영할 수 있다. 2. rebase는 별도의 커밋 이력을 남기지 않아 보다 깔끔한 commit history를 유지할 수 있다. 단점 1. 충돌이 발생하면 각 commit마다 충돌을 해결해주어야 한다. 충돌을 해소할 때마다 continue rebase를 해주어야 하는 번거로움이 있을 수 있다. 2. 이미 원격 저장소에 push 한 커밋을 rebase 하는 것은 위험하다. 방법 현재 Git 저장소 상태가 아래와 같다고 하자. 작업을..

Git | GitLab 2022.11.20

[Python] NumPy - 배열의 연산 1

벡터화 연산 NumPy가 지원하는 벡터화 연산을 사용하면 반복문을 명시적으로 사용하지 않아도 배열의 모든 원소에 대한 반복 연산을 할 수 있다. 이로 인해 선형 대수 공식과 동일한 형태로 Python 코드를 작성할 수 있게 된다. 선형 대수에서 두 벡터의 합은 다음과 같이 구한다. $$ x = \begin{bmatrix}1 \\ 2 \\ 3 \\ \vdots \\ 10000 \end{bmatrix}, \;\;\;\; y = \begin{bmatrix}10001 \\ 10002 \\ 10003 \\ \vdots \\ 20000 \end{bmatrix}, $$ 일 때, 두 벡터의 합 $$ z = x + y $$ 은 다음과 같이 구한다. $$ \begin{bmatrix}1 \\ 2 \\ 3 \\ \vdots ..