안녕하세요. HEIDISQL 12.3.0.6589를 사용하고 있고요. CSV 파일 불러오기 강습내용대로, 그리고 AGE가 NULL 허용으로 되어 있고 기본값을 NULL로 해놨으나, CSV가져오기를 하면 경고가 뜨고 데이터를 확인하면 AGE NULL 이어야 하는데 '0'으로 되어있는데요. 그 이유를 모르곘습니다.
안녕하세요. 기존에 사용하던 mysql 5버전이 있는데, 실습 환경을 동일하게 맞추기 위해 8버전을 설치하여 실습 중입니다. 환경변수 경로가 5버전으로 되어있는데 혹시 명령어로는 버전별 선택해서 접속할 수 없는건가요?? 물론 환경변수 경로를 8버전으로 설정하면 해결되겠지만 계속 왔다갔다하기 번거로워 질문남깁니다!ㅠㅠ
안녕하세요. 강의 듣는 중 궁금한 점이 있어서 질문드립니다. 만약 '카테고리별 기준 월, 전 월, 작년 월 ( 기준 월 = 2023/10, 전월 = 2023/09, 작년 월 = 2022/10)의 차이'를 구하라고 한다면 강의와 같이 기준 연월의 일년 정도의 데이터(2022/10 ~ 2023/10)를 가져와서 사용하는게 더 좋을까요? 아니면, 3개 조건 각각 select하여 카테고리 기준으로 join하는게 더 좋을까요? ex) with as ( 기준 월), with as (전 월), with as (작년 월)... 혹은 더 좋은 방법이 있다면 알려주시면 감사하겠습니다. 이런 질문 드려도 되는지 모르겠지만.. 강의 잘 듣고 있습니다. 감사합니다.
멀티 스케줄러 환경에서, 각 스케줄러는 Dag Parsing DB에 해당정보를 기록 Scheduler Loop 의 과정을 거친다고 이해했습니다. 여기서, Dag Parsing에 관한 부분은 DB에 관한 정보를 참고해서 하는것이 아닌 코드만을 가지고서 돌려보는 것으로 이해하고 있는데, 그렇다면 1번 과정(Dag Parsing)은 멀티 스케줄러 환경을 구성한다고 해서 시간 단축의 효과를 얻을 수 없는것인가요?? DAG이 10개가 있고, 스케줄러가 두개가 있다면, 1번 스케줄러가 첫번째 DAG를 돌렸고, Lock을 걸은 후, 해당 작업이 큐까지 들어가게 되면 DB에 관한 정보의 Lock을 해제 하나요? 그렇다면 만약 다른 스케줄러가 해당 DAG의 정보를 검색했을때, 해당 DAG에 관한 Scheduler Loop를 돌것이고, 그렇다면 이 상황에서는 멀티스케줄러의 이점을 얻을 수 없는것인지가 궁금합니다. 감사합니다.
안녕하세요, 양질의 강의 항상 감사드립니다! 다름이 아니라 현재 실무에서 스프링 배치를 이용해서 데이터를 DB to DB 로 마이그레이션하는 업무가 있는데 이를 강의에서 배운 카프카 커넥트를 활용하면 좋을것 같아서 고민중인데 잘 안풀리는 부분이 있어 질문드립니다 데이터 가공문제 DB to DB 로 이관시 가장 좋은것은 커넥트만 써서 코드개발없이 마이그레이션 해버리는 것이 좋을것같은데 막상 실제 마이그레이션 할 때는 source 에서 퍼온 데이터를 sink 시 몇몇 컬럼은 데이터 가공하거나 없어지는 등 가공에 약간 손을 봐야하는 경우가 종종 있어서 이런 케이스에 대해 어떻게 해결을 해야할 지 고민입니다. 고민을 해봤을 때 해결방안으로는 streams api 를 껴서 아래와 같은 아키텍쳐로 해결하는 방법이 있을 것 같은데요 source -> topic -> kafka stream api 등을 통해 데이터 가공 후 topic 전송 -> sink 커스텀 sink 나 source 커넥터 개발 어느 방법이나 결국 추가개발이 필요한건 매한가지라 현재 배치로 개발해놓은 구조를 커넥트를 이용하도록 바꿨을 때 이점이 명확하게 안보여서 좀 고민입니다... 데이터 마이그레이션 후 검증문제 실무에서 배치로 마이그레이션 후 원본데이터가 있는 source db 와 마이그레이션 한 sink db 간에 건수비교 등 데이터 이관이 잘 되었는지 대사비교를 진행하는데요, 카프카 커넥트로 전환한다고 해도 이러한 대사비교는 여전히 필요하지 않을까 싶은데 실무에서 카프카 커넥트를 활용할 때 이러한 검증 문제를 어떻게 해결하는지 궁금합니다 카프카 커넥트를 실무에서 활용한 경험이 없다보니.... 강사님이라면 이러한 문제에 직면했을때 어떤 생각을 가지실 지 궁금합니다! 감사합니다:)
안녕하세요? 주문별 연관 상품 추출 SQL에서 SELECT a.order_id, a.product_id, b.product_id from ga.order_items a join ga.order_tems b on a.order_id = b.order_id where a.product_id <> b.product_id 위 코드와 같이 where 절 안에서 같은 product_id가 조인 되는 경우를 filtering 하였습니다. 혹시 join 조건절에서(아래 sql과 같이) filtering 하지 않고 where 절에서 하는 이유가 있을까요? SELECT a.order_id, a.product_id, b.product_id from ga.order_items a join ga.order_tems b on a.order_id = b.order_id and a.product_id <> b.product_id
안녕하세요! 'Bash Operator & 외부 쉘파일 수행하기' 강의를 듣고 실습하던 중 에러가 생겨서, 해결을 시도했는데 계속해서 실패해서 질문을 남겨봅니다! airflow를 실행하고 태스크를 수행하면 fail이 뜨는데, 로그를 확인하면 파일을 찾을 수 없다고 합니다. [2023-10-12, 14:12:25 KST] {subprocess.py:93} INFO - /bin/bash: line 1: /opt/***_log/plugins/shell/select_fruit.sh: No such file or directory [2023-10-12, 14:12:25 KST] {subprocess.py:97} INFO - Command exited with return code 127 [2023-10-12, 14:12:25 KST] {taskinstance.py:1935} ERROR - Task failed with exception Traceback (most recent call last): File "/home/airflow/.local/lib/python3.8/site-packages/airflow/operators/bash.py", line 210, in execute raise AirflowException( airflow.exceptions.AirflowException: Bash command failed. The command returned a non-zero exit code 127. 저는 wsl에 디렉토리는 아래 경로처럼 설정했습니다.(select_ fruit.sh 파일에 실행 권한도 주었습니다.) /airflow_log/plugins/shell/select_fruit.sh 이후 docker-compose.yaml에 volumes 항목을 아래와 같이 설정을 했습니다. ${AIRFLOW_PROJ_DIR:-.}/airflow_log/plugins:/opt/airflow/plugins Vscdoe에서 경로는 아래와 같이 설정을 했습니다. t1_orange = BashOperator( task_id="t1_orange", bash_command="/opt/airflow_log/plugins/shell/select_fruit.sh ORANGE", ) t2_banana = BashOperator( task_id="t2_banana", bash_command="/opt/airflow_log/plugins/shell/select_fruit.sh BANANA", ) 경로 문제인지, 아니면 다른 문제인지.. 도움 요청해봅니다. 저에게 너무 필요한 강의라서 잘 듣고 있습니다! 앞으로도 좋은 강의 부탁드리겠습니다!
안녕하세요! 현재 Bash operator DAG 만들기 & DAG 디렉토리 셋팅 강의를 수강하고 있습니다. 19분 50초 즈음 dags 폴더의 경로를 설정하는 과정에서 git repo 내의 dags를 지정하는 것에 궁금증이 생겨 질문을 작성하게 되었습니다. 만약 제가 다른 repo를 파서 새로운 dags 폴더를 만들게 되면, 그 때는 저 환경 설정을 다시 해야한다고 생각하는데, 이게 맞는지 궁금합니다. 다시 설정을 하지 않으려면, 설정한 dags 안에 모든 dag가 들어가야 하는데, 나중에 헷갈리지는 않을까 걱정이 되어 질문 드립니다. 덕분에 airflow 공부 하는 것이 기대가 됩니다. 좋은 강의 해주셔서 정말 감사합니다.
이메일 주소가 yalco@yalco.kr 가 맞을까요? 아무튼 SQL 설치하려는데 윈도우의 경우 윈도우의 경우 MySQL Installer for Windows로 한 번에 설치 하라 되어 있고 이에 보니 32비트라 되어 있으나 저의 컴퓨터는 64비트 입니다. 그냥 저 다운로드 받는 경로에서 workbench / community server 를 개별로 다운받으면 되는지요... 그렇다면 sample database는 어느 경로에서 받으면 되는 걸까요 확인 부탁드립니다.
commit을 꼭 하지 않아도 record가 안전하게 처리되는 방법이 있을까요? 파티션 하나에 토픽 하나로 써비스 하고 있는데 선생님 강의 보며 commit을 해야하겠다 생각했지만, 기술팀 분에게 여쭈니 꼭 commit하지 않아도 된다고 파이프라인은 그냥 데이터 보내는거라고 해서 안해도 된다고 하시는데 음.. 어떻게 이해를 하면 좋을까요?
궁금한 사항이 있어서 질문 남깁니다. connect-distributed.properties 설정 관련 내용입니다. 3노드 클러스터로 구성했는데 커넥트 기동하기 강의 편에서 설정하는 부분이 있습니다. 제가 3노드로 구성했는데 # 삭제하고 listeners= HTTP://192.168.20.26:8083,HTTP://192.168.20.27:8083,HTTP://192.168.20.28:8083 이렇게 구성하는게 맞는건지 궁금합니다. 현재 설정은 #으로 주석 처리되어있습니다. 감사합니다.
KafkaProducer의 send 메소드를 try-catch 하면 아래와 같은 예외는 잡을 수 있는데요 Throws: AuthenticationException – if authentication fails. See the exception for more details AuthorizationException – fatal error indicating that the producer is not allowed to write IllegalStateException – if a transactional.id has been configured and no transaction has been started, or when send is invoked after producer has been closed. InterruptException – If the thread is interrupted while blocked SerializationException – If the key or value are not valid objects given the configured serializers TimeoutException – If the record could not be appended to the send buffer due to memory unavailable or missing metadata within max.block.ms. KafkaException – If a Kafka related error occurs that does not belong to the public API exceptions. Batch 로 레코드를 묶어서 실제로 브로커에게 전송하는 Sender Thread 에서 네트워크 이슈 등으로 실패하면 어떻게 처리해야할지가 궁금합니다. (retries가 아닌 예외로 잡는 방법이 없을까요? ㅠㅠ)
안녕하세요. 강의 잘 듣고 있습니다. 저는 Mac환경에서 수강중이고, airflow 2.7.1을 사용중입니다. 강의에서 dag을 pull하고 2~3분 정도 기다리면 auto-refresh되어 compose를 재실행하지 않아도 된다고 하셨는데, 제 경우엔 auto-refresh가 된 이후에도 새로 추가된 dag이 리스트에 나타나지 않더라구요. 그래서 매번 compose를 재실행하고 있는데, 혹시 의심가는 원인이 있다면 말씀해주실 수 있으실까요? 구글링을 해봐도 해결방법을 찾기 쉽지 않아서 질문 남깁니다ㅜㅜ