본문 바로가기

오탈자 정보

[Apache Airflow 기반의 데이터 파이프라인]_오탈자

현재까지 발견된 이 책의 오탈자 정보와 오류를 안내합니다. 번역과 편집 시에 미처 확인하지 못하고 불편을 끼쳐드려 죄송하다는 말씀을 드립니다. 아래의 오탈자 사항은 추후 3쇄 시에 반영하도록 하겠습니다.

 

이외의 오탈자 정보를 발견하시면 옮긴이(jeongmin@gmail.com)나 출판사(help@jpub.kr)로 연락주시면 고맙겠습니다. 

 

최종수정일자: 2024년 4월 29일 
2쇄본 오탈자

12쪽 본문 2번째 줄에서(LDesire 님 제보)

개념적으로 스케줄러는 다음과 단계를 통해


개념적으로 스케줄러는 다음 단계를 통해

 

12쪽 3번 항목 2번째 줄에서(LDesire 님 제보)

의존성 태스크가 완료되지 않았다면 실행 대기열에 추가합니다.


의존성 태스크가 완료되었다면 실행 대기열에 추가합니다.

 

31쪽 리스트 2.10 '도커에서 Airflow 실행하기'의 1~2번째 행에서(유영기 님 제보)

docker run \

docker run -it -p 8080:8080 \  호스트에 8080 포트 개방


docker run -it \

       -p 8080:8080 \  호스트에 8080 포트 개방

 

40쪽 끝에서(LDesire 님 제보)

DAG 안의 있는 태스크는 어디에 위치하든지 재시작할 수 있습니다.


DAG 안에 있는 실패한 작업은 어디에 위치하든지 재시작할 수 있습니다.

 

41쪽 본문 5번째 에서(LDesire 님 제보)

다음으로, 데이터 분석에 대해 점전적인 접근 방법을 확인하고


다음으로, 데이터 분석에 대해 점적인 접근 방법을 확인하고

 

42쪽 리스트 3.1 '(예약 안 된) 이벤트 DAG의 버전 초기화' 1~2번째 행에서(LDesire님 제보: 'dt' 위치 변경)

import datetime as
dt from pathlib import Path


import datetime as dt
from pathlib import Path

 

43쪽 리스트 3.1 '(예약 안 된) 이벤트 DAG의 버전 초기화' 8번째 행에서(LDesire님 제보: 'https'가 아니라 'http')

"https://localhost:5000/events"


"http://localhost:5000/events"

 

44쪽 그림 3.1 설명 1번째 줄에서(LDesire님 제보)

DAG가 시작일은 2019-01-01


DAG 시작일은 2019-01-01

 

44쪽 2번째 노트 삭제(LDesire님 제보: 84쪽의 노트와 내용상 중복되어 삭제)
Jinja 사용을 위해서 템플릿화할 수있는 파일을 검색할 경로를 제공해야 합니다. 기본적으로 DAG 파일의 경로만 검색되지만 /tmp에 저장했기 때문에 Jinja가 해당 파일을 찾을 수 없습니다.

Jinja 사용을 위해서 템플릿화할 수있는 파일을 검색할 경로를 제공해야 합니다. 기본적으로 DAG 파일의 경로만 검색되지만 /tmp에 저장했기 때문에 Jinja가 해당 파일을 찾을 수 없습니다.

 

46쪽 밑에서 6번째 줄에서(LDesire님 제보)

0 0 * * MON, WED, FRI = 매주 월, 화, 금요일 자정에 실행


0 0 * * MON, WED, FRI = 매주 월, , 금요일 자정에 실행

 

51쪽 리스트 3.7 '템플릿에서 축약어 사용하기'의 1번째 주석에서(LDesire님 제보)

ds는 YYYYMM-DD 형식의 execution_date를 제공합니다.


ds는 YYYY-MM-DD 형식의 execution_date를 제공합니다.

 

52쪽 본문 6번째 에서(LDesire 님 제보)

실행 날짜별로 데이터 세트를 파티션하는 이점은 DAG에서 아래 두 번째 태스크(compute_stats)


실행 날짜별로 데이터 세트를 파티션하는 이점은 DAG에서 아래 두 번째 태스크(calculate_stats)

 

58쪽 리스트 3.12 '하나의 태스크 안에서 두 개의 작업은 원자성을 무너뜨림'의 마지막 행 삭제(LDesire님 제보)

calculate_stats >> email_stats


calculate_stats >> email_stats

 

71쪽 상단 코드문 주석에서(이도엽 님 제보)

중괄호 안의 값은 로켓 발사 1회 내용을 나타냅니다


PythonOperator는 파이썬 함수를 이용해 실행하며, BashOperator는 Bash 명령을 문자열로 받아 실행합니다.

 

72쪽 리스트 4.6 'kwargs에 저장된 키워드 인수'의 주석에서(LDesire님 제보)

그리고 캡처 인수의 이름을 kwrgs에 지정합니다.


그리고 캡처 인수의 이름을 kwargs에 지정합니다.

 

74쪽 밑에서 2번째 줄에서(LDesire님 제보)

되고 다른 모든 변수는 함수 서명에서 명시적으로 정의하지 않았으므로


되고 다른 모든 변수는 함수 시그니처에서 명시적으로 정의하지 않았으므로

 

80쪽 8번째 줄에서(LDesire님 제보)

Airflow는 XCom이라는 기본 메커니즘을 제공하여 Airflow 메타스토어에서 선택 가능한


Airflow는 XCom이라는 기본 메커니즘을 제공하여 Airflow 메타스토어에서 피클링이 가능한

 

88쪽 9번째 줄에서(LDesire님 제보)

예를 들어, 2장에서 DAG를 가져오는 로켓 발사 사진(그림 5.1)은


예를 들어, 2장에서 로켓 발사 사진을 가져오는 DAG(그림 5.1)는

 

88쪽 그림 5.1 제목에서(LDesire님 제보)

2장의 메타데이터 다운로드, 사진 가져오기, 알림 전송을 위한 세 가지 태스크로 구성된 로켓 사진 가져
오기 DAG(그림 2.3과 동일)


2장의 메타데이터 다운로드, 사진 가져오기, 알림 전송을 위한 세 가지 태스크로 구성된 로켓 사진을 가져
오는 DAG(그림 2.3과 동일)

 

89쪽 밑에서 6~5번째 줄에서(LDesire님 제보)

Umbrella DAG의 주요 목적은 서로 다른 두 소스에서 매일 날씨 및 판매 데이터를 가져와서 두 데이터 세트를 데이터 세트로 결합하여 모델을 학습시키는 것이었습니다.


Umbrella DAG의 주요 목적은 서로 다른 두 소스에서 매일 날씨 및 판매 데이터를 가져와서 두 데이터를 데이터 세트로 결합하여 모델을 학습시키는 것이었습니다.

 

90쪽 리스트 5.4 '팬아웃(일 대 다) 의존성에 추가하기(dags/01_start.py)'의 1~2행에서(LDesire님 제보: "dummy module is deprecated.")

from airflow.operators.dummy import DummyOperator
start=DummyOperator(task_id="start")


from airflow.operators.empty import EmptyOperator
start=EmptyOperator(task_id="start")

 

96쪽 리스트 5.12 아랫줄에서(LDesire님 제보)

마찬가지로 두 데이터 정제 태스크를 연결은


마찬가지로 두 데이터 정제 태스크 연결은

 

96쪽에서(LDesire님 제보)

datasets 태스크를 건너뛰어 실행하지 않습니다(그림 5.8).


datasets 태스크를 건너뛰기 때문에 실행하지 않습니다(그림 5.8).

 

97쪽 9~10번째 에서(LDesire님 제보)

이를 통해 모든 상위 항목이 실행 완료 및 실패가 없을 시에 즉시 작업이 실행됩니다.


이를 통해 모든 상위 항목이 실행이 완료되고 실패가 없을 시에 즉시 작업이 실행됩니다.

 

100쪽 리스트 5.17 'DAG에서 조건부 빌드하기(dags/06_condition_dag.py)'에서(LDesire님 제보: latest_only 변수 들여쓰기 수정)

def _latest_only(**context):
...
     latest_only=PythonOperator(
          task_id="latest_only",
          python_callable=_latest_only
     )
latest_only >> deploy_model


def _latest_only(**context):
...
latest_only=PythonOperator(
     task_id="latest_only",
     python_callable=_latest_only,

     dag=dag,
)
latest_only >> deploy_model

 

102쪽 본문 1번째 줄에서(박정원 님 제보)

LastOnly


LatestOnly

 

102쪽 밑에서 4번째 줄에서(박정원 님 제보)

결론적으로 Airflow에 사용 가능한 실행 슬롯이 있는 있다면


결론적으로 Airflow에 사용 가능한 실행 슬롯이 있다면

 

124쪽 리스트 6.3 'DAG에서 최대 동시 태스크 수 설정하기'에서(LDesire님 제보: 변수명 모두 소문자로 수정)

Dag_id="couponing_app",
Start_date=datetime(2019, 1, 1),
Schedule_interval="0 0 * * *",
Concurrency=50,


dag_id="couponing_app",
start_date=datetime(2019, 1, 1),
schedule_interval="0 0 * * *",
concurrency=50,

 

129쪽 중간 코드문 제목에서(역자 제보: 끝에 마침표 삭제요망)

리스트 6.4.


리스트 6.4

129쪽 중간 코드문 1번째  주석에서(이도엽  님 제보)

dag_id는 정렬되어야 합니다.


dag_id는 일치해야 합니다.

 

134쪽 그림 6.21 캡션에서(LDesire님 제보)

schedule_intervals가 정렬되어 있지 않아


schedule_interval 정렬되어 있지 않아