(전) 엔코아 컨설팅
(전) 한국 오라클
AI 프리랜서 컨설턴트
파이썬 머신러닝 완벽 가이드 저자
강의
로드맵
전체 5수강평
- 데이터 분석 SQL Fundamentals
- FastAPI 완벽 가이드
게시글
질문&답변
Cooperative Sticky Rebalancing 질문
좋은 질문이군요.Consumer가 Eager 모드에서 Rebalancing을 하게 되면 poll()이 rebalance가 완료 될때까지 기존 할당된 파티션에서 데이터를 가져오지 않고 빈 값만 반환합니다. Rebalancing이 완료되어서 파티션이 재 할당되면 그때부터 해당 파티션에서 데이터를 가져 옵니다. 근데 Cooperative Sticky로 Rebalancing이 되는 경우에는 poll()은 기존 할당된 파티션에서는 계속 데이터를 가져오고, 신규 파티션에서는 Rebalaning이 완료 된 이후에 데이터를 가져오는 방식을 사용합니다. 감사합니다.
- 0
- 2
- 10
질문&답변
consumer 설정 질문
안녕하십니까, 제가 질문을 잘 이해하지 못했습니다. 먼저 질문 중=>이렇게 말씀하셨는데컨슈머를 띄울 때 파티션별로 각 서버마다 따로 뜨게 하시는지한 컨슈머 서버에 여러 파티션을 구독하게 띄우시는지 궁금합니다.=================에서 서버와 컨슈머 서버가 어떤 것을 의미하는 지요? Kafka에서 Consumer 는 Client입니다. 그리고 broker는 서버입니다. 즉 consumer client 가 broker 서버에 접속해서 데이터를 읽어 들이는 구조 입니다. 다시 한번 질문 확인 부탁드립니다. 감사합니다.
- 0
- 2
- 15
질문&답변
consumer.poll 질문입니다.
안녕하십니까, 메인 질문과 추가질문 1 답변입니다. Consumer Client는 poll()을 통해 Kafka Broker에 아직 읽지 않은, 또는 새로운 데이터가 있으면 즉시 가져와야 합니다. 기다릴 필요가 없습니다. 그래야 빠른 데이터 처리가 가능합니다. 카프카의 철학이라기 보다 빠른 데이터 처리를 위해서 필요한 부분입니다. poll()은 새로운 데이터가 있으면 즉시 읽고, 없으면 poll()에 셋팅된 시간 값으로 새로운 데이터가 있는지 주기적으로 확인하고, 있다면 데이터를 가져오려고 시도하는 것입니다. 추가 질문 2heart beat thread는 만약 여러 토픽과 토픽 내에서도 여러 그룹 아이디로 구독하고 있다 했을 때 어떻게 동작을 하는지 궁금합니다.=> 먼저 하나의 heart beat thread는 여러 Consumer 그룹 아이디를 가질 수 없습니다.heart beat thread는 하나의 Consumer Client 프로세스 당 별도로 한개의 thread가 heart beat 용으로 생성되는 형태 입니다. 근데 하나의 Consumer Client는 단 하나의 Consumer 그룹 아이디 만을 가질 수 있기 때문에 heart beat thread 역시 단 하나의 Consumer 그룹아이디에 종속 됩니다. 하나의 Consumer Client는 여러개의 Topic들을 읽어 들일 수 있습니다. 보통은 데이터 처리를 Topic별로 헷갈리지 않게 하기 위해서 하나의 Consumer Client가 하나의 Topic을 읽지만, 필요하다면 여러개의 Topic들을 한번에 읽어 들일 수 있습니다. 이 경우에도 역시 heart beat thread는 Consumer Client 에 종속 되므로 한 개 입니다. 감사합니다.
- 0
- 2
- 17
질문&답변
mainThread.join() 관련 질문
안녕하십니까,잘 듣고 계시다니, 저도 기분이 좋군요.mainThread.join()을 사용하지 않을 때 close()가 호출되지 않는 경우가 생길 수 있나요? finally 블럭의 close() 실행은 join()의 호출 없이도 보장되지 않나요? try 구문 내의 코드의 실행을 보장하기 위해서 join()이 필요한 건 이해가 됐습니다!=> 말씀하신 대로 Java application에서 자연스러운 종료는 exception이 발생하지 않아도 finally block이 수행됩니다. 하지만 main thread가 loop에서 대기하고 있는 상황에서(즉 consumer poll()과 같은) ctrl+c 로 종료를 시킨다던가 하는 경우에는 finally block이 호출되지 않을 수 있습니다.때문에 이와 같은 상황에서 JVM이 스스로 종료될 때 마지막으로 consumer close등의 리소스 해제 작업을 addShutdownHook()을 사용해서 등록을 시켜 주는 것입니다. 감사합니다.
- 0
- 2
- 14
질문&답변
Debezium CDC Source Connector 이벤트 메시지
안녕하십니까, Debezium CDC 는 소스 DB의 commit 이 적용된 데이터만 적용이 됩니다. 제 설명은 DB의 redo log는 commit되지 않는 데이터도 가지고 있기 때문에 before와 after 속성을 가지고 있다는 의미입니다. Debezium이 Kafka topic에 rollback을 적용하기 위해서 존재한다는 의미는 아닙니다. Debezium에서 before와 after를 가지는 이유는 아마도 update나 delete 시에 또는 문제 발생 시 이전에 어떤 데이터가 어떻게 변경되었는지 알기 위해서가 주요 이유일 것입니다. 그럼에도 제가 설명 시 redo log의 before/after 속성을 언급드린 이유는 Debezium을 포함한 CDC 제품이 redo log 포맷을 최대한 유지하려고 하기 때문에 redo log의 before와 after를 가지는 특징을 그대로 반영했을 거라는 의미 입니다. debezium은 아니지만 특정 CDC 제품들은 commit 되지 않은 redo log도 그대로 복제한 뒤에 나중에 rollback되면 복제된 target 데이터도 다 rollback하는 기능을 가지고 있는 경우도 있습니다. 감사합니다.
- 0
- 2
- 18
질문&답변
분류 평가 정확도 예측
안녕하십니까, 네, 맞습니다. FP, TP가 0으로 나오는 이유는 dummy classifier 모든 예측을 다 0 즉 Negative로 했기 때문에 아예 Positive가 없어서 FP, TP는 0이 나오게 됩니다. 감사합니다.
- 0
- 2
- 22
질문&답변
없는강의요청해도됩니까,,
안녕하십니까, 좋은 동기 부여 감사합니다. 데이터 모델링은 계획에 없지만, 쿼리 튜닝 강의는 준비하겠습니다.다만 현재 딥러닝 후속 강의에 집중하느라 쿼리 튜닝 강의는 내년 상반기 정도에 출시가 가능할 것 같습니다. 감사합니다.
- 0
- 2
- 26
질문&답변
81강 한 건도 못찾았을 경우 질문
안녕하십니까, 날카로운 지적이십니다 ^^SQLAlchemy 버전에 따라 차이가 있을 수 있지만, 현 버전의 SQLAlchemy Connection Pool은 connection이 close()되어서 connection pool 로 돌아가면 자동으로 Cursor result를 닫아 줍니다. 따라서 오류가 발생해서 result의 close()를 수행할 수 없지만 connection close()가 finally에서 수행되므로 connection pool로 돌아가면서 자동으로 cursor result가 닫히게 됩니다. 그렇지만, 암묵적으로 connection close() 시에 이런 작업들이 수행되더라도, 명시적으로 cursor result를 닫아주는 것은 필수 입니다. 감사합니다.
- 0
- 2
- 29
질문&답변
왜 train epoch에선 0.0 validate epoch에선 0?
안녕하십니까, 눈썰미가 좋으시군요 ^^큰 의미가 없습니다. 원래 0.0으로 다 통일하는게 맞는데, 0으로 초기에 설정한 부분이 있습니다. 결과는 0이나 0.0이나 최종 결과는 동일하게 소수점으로 나옵니다. 감사합니다.
- 0
- 1
- 22
질문&답변
10. 조인 실습 - 02 관련 질문
안녕하십니까,이런 경우 수행하신 SQL을 차근 차근 결합해 보시는게 좋습니다.먼저 emp a 와 emp_dept_hist b 만 조인해서 a의 dept_no와 b의 dept_no를 보시면selecta.ename, a.empno, a.deptno as a_deptno, b.deptno as b_deptnofromhr.empajoinhr.emp_dept_histbona.empno = b.empnowherea.ename = 'SMITH';a의 dept_no는 직원의 현재 dept_no입니다. 그리고 b의 dept_no는 과거까지 포함된 dept_no 입니다.그런데 아래와 같이 emp의 a.dept_no와 dept의 c.deptno를 조인하게 되면 현재 부서의 dept에 대한 정보만 나오게 됩니다. 그러니까, b.fromdate, b.todate는 부서 변경이력이 나오지만, c.dname은 현재 부서명만 나오게 되므로 원하는 결과가 되지 않습니다.selecta.ename, a.empno, b.deptno, c.dname, b.fromdate, b.todatefromhr.empajoinhr.emp_dept_histbona.empno = b.empnojoinhr.deptcona.deptno = c.deptnowherea.ename = 'SMITH'; 그래서 제가 작성한 SQL과 같이 과거 이력의 emp_dept_hist의 deptno와 dept의 deptno를 조인해야 과거 dept에 대한 dname 정보를 가져 올 수 있습니다. 감사합니다.
- 0
- 1
- 24