묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결카프카 완벽 가이드 - ksqlDB
ksqldb timestamp 타입 질문
안녕하세요, ksqldb에는 RDBMS와 달리 datetime 타입이 따로 없는 것 같은데요, timestamp 타입은 타임존이 반영된 타입인건가요?
-
미해결Airflow 마스터 클래스
sqlalchemy.create_engine으로 생성한 객체에 cursor가 없습니다.
전체 에러 로그:8fbc4f9f281a*** Found local files:*** * /opt/airflow/logs/dag_id=dags_python_with_custom_hook_bulk_load/run_id=manual__2024-03-06T03:55:34.102649+00:00/task_id=insrt_postgres/attempt=1.log[2024-03-06T03:55:35.452+0000] {taskinstance.py:1979} INFO - Dependencies all met for dep_context=non-requeueable deps ti=<TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [queued]>[2024-03-06T03:55:35.456+0000] {taskinstance.py:1979} INFO - Dependencies all met for dep_context=requeueable deps ti=<TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [queued]>[2024-03-06T03:55:35.456+0000] {taskinstance.py:2193} INFO - Starting attempt 1 of 1[2024-03-06T03:55:35.464+0000] {taskinstance.py:2214} INFO - Executing <Task(PythonOperator): insrt_postgres> on 2024-03-06 03:55:34.102649+00:00[2024-03-06T03:55:35.469+0000] {standard_task_runner.py:60} INFO - Started process 262 to run task[2024-03-06T03:55:35.471+0000] {standard_task_runner.py:87} INFO - Running: ['***', 'tasks', 'run', 'dags_python_with_custom_hook_bulk_load', 'insrt_postgres', 'manual__2024-03-06T03:55:34.102649+00:00', '--job-id', '620', '--raw', '--subdir', 'DAGS_FOLDER/dags_python_with custom_hook_bulk_load.py', '--cfg-path', '/tmp/tmp0zav_1t7'][2024-03-06T03:55:35.472+0000] {standard_task_runner.py:88} INFO - Job 620: Subtask insrt_postgres[2024-03-06T03:55:35.504+0000] {task_command.py:423} INFO - Running <TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [running]> on host 8fbc4f9f281a[2024-03-06T03:55:35.555+0000] {taskinstance.py:2510} INFO - Exporting env vars: AIRFLOW_CTX_DAG_OWNER='***' AIRFLOW_CTX_DAG_ID='dags_python_with_custom_hook_bulk_load' AIRFLOW_CTX_TASK_ID='insrt_postgres' AIRFLOW_CTX_EXECUTION_DATE='2024-03-06T03:55:34.102649+00:00' AIRFLOW_CTX_TRY_NUMBER='1' AIRFLOW_CTX_DAG_RUN_ID='manual__2024-03-06T03:55:34.102649+00:00'[2024-03-06T03:55:35.556+0000] {custom_postgres_hook.py:24} INFO - 적재 대상 파일: /opt/***/files/TbCorona19CountStatus/20240306/TbCorona19CountStatus.csv[2024-03-06T03:55:35.556+0000] {custom_postgres_hook.py:25} INFO - 테이블 :TbCorona19CountStatus_bulk2[2024-03-06T03:55:35.562+0000] {base.py:83} INFO - Using connection ID 'conn-db-postgres-custom' for task execution.[2024-03-06T03:55:35.582+0000] {custom_postgres_hook.py:34} INFO - TbCorona19CountStatus_bulk2.S_DT: 개행문자 제거[2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:34} INFO - TbCorona19CountStatus_bulk2.T_DT: 개행문자 제거[2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:38} INFO - 적재 건수:1212[2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:40} INFO - postgresql://***:***@172.28.0.3/***[2024-03-06T03:55:35.587+0000] {warnings.py:110} WARNING - /opt/***/plugins/hooks/custom_postgres_hook.py:43: UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy. file_df.to_sql(name = table_name,[2024-03-06T03:55:35.589+0000] {taskinstance.py:2728} ERROR - Task failed with exceptionTraceback (most recent call last): File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 444, in executetask result = executecallable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 414, in executecallable return execute_callable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/operators/python.py", line 200, in execute return_value = self.execute_callable() ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/operators/python.py", line 217, in execute_callable return self.python_callable(*self.op_args, **self.op_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/airflow/dags/dags_python_with custom_hook_bulk_load.py", line 14, in insrt_postgres custom_postgres_hook.bulk_load(table_name=tbl_nm, file_name=file_nm, delimiter=',', File "/opt/airflow/plugins/hooks/custom_postgres_hook.py", line 43, in bulk_load file_df.to_sql(name = table_name, File "/home/airflow/.local/lib/python3.11/site-packages/pandas/util/_decorators.py", line 333, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/core/generic.py", line 3084, in to_sql return sql.to_sql( ^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 842, in to_sql return pandas_sql.to_sql( ^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2848, in to_sql table.create() File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 984, in create if self.exists(): ^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 970, in exists return self.pd_sql.has_table(self.name, self.schema) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2863, in has_table return len(self.execute(query, [name]).fetchall()) > 0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2670, in execute cur = self.con.cursor() ^^^^^^^^^^^^^^^AttributeError: 'Engine' object has no attribute 'cursor'[2024-03-06T03:55:35.597+0000] {taskinstance.py:1149} INFO - Marking task as FAILED. dag_id=dags_python_with_custom_hook_bulk_load, task_id=insrt_postgres, execution_date=20240306T035534, start_date=20240306T035535, end_date=20240306T035535[2024-03-06T03:55:35.605+0000] {standard_task_runner.py:107} ERROR - Failed to execute job 620 for task insrt_postgres ('Engine' object has no attribute 'cursor'; 262)[2024-03-06T03:55:35.643+0000] {local_task_job_runner.py:234} INFO - Task exited with return code 1[2024-03-06T03:55:35.655+0000] {taskinstance.py:3309} INFO - 0 downstream tasks scheduled from follow-on schedule check결과로 cursor가 attribute로 없다는 오류가 발생합니다. 기존에 있던 이후 글은 글자수 제한으로 삭제합니다.
-
해결됨Airflow 마스터 클래스
외부 파이썬 함수 수행하기 - workspace folder 질문
알찬 강의 항상 감사드립니다.작업 위치1 (vsc상에서 작성하고 git push를 하는 위치) : [~/Desktop/airflow강의]작업 위치2 (WSL에서 git pull을 하는 위치) : [~/airflow]저는 위와 같은 경로상에서 수업 실습을 진행하고 있으며, '외부 파이썬 함수 수행하기' 강의에서 .env 파일을 다음과 같이 작성했습니다.WORKSPACE_FOLDER=/Users/hpsm5187/Desktop/airflow강의airflow가 인식하는 작업 폴더는 '작업 위치2'인 걸로 아는데, .env파일 내의 경로는 '작업 위치1'의 경로임에도 이상 없이 작동이 되는 부분이 의아합니다. .env파일을 git에서 인식하지 않도록 처리했는데 .env에서 정의해준 경로는 어떻게 반영이 되는건가요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 수업 중 질문이 있습니다.
안녕하세요? 월단위 카테고리별 매출액과 주문건수 및 전체매출액 대비 비율 sql로 구하기 강의 에서,하기 함수에 distinct를 반드시 사용해야만 하는 이유를 잘 모르겠습니다. order_date에 order_id가 여러 번 있을 수 있는 상황은 전혀 없을까요? 답변 부탁드립니다.
-
해결됨Airflow 마스터 클래스
docker_compose.yaml파일이 비어있습니다
안녕하세요 강사님, 문제 사항 질문 드립니다.Bash Operator DAG만들기 부분에서docker_compose.yaml파일을 vi편집기로 열어보았는데요, 이렇게 표시되며 j, k로 스크롤해보아도 변함이 없습니다.혹시 컴포즈 파일이 비어있는 상태인걸까요?docker compose up명령어는 문제 없이 실행됩니다.++ 질문 수정vscode로 파일을 확인해보니 같은 파일이 두 개 있고, 하나는 비어있고 하나는 강의에서와 동일하게 내용이 차 있습니다. ++ 해결되었습니다.찾아보니 새로 생긴 파일 하나는 macos자체에서 생성하는 메타데이터 파일이라고 하는것 같네요. 시간 좀 지나고 다시 vi편집기로 열어보니 내용이 있는 파일이 열렸습니다. 감사합니다!
-
미해결다양한 사례로 익히는 SQL 데이터 분석
with 절 질문
안녕하세요.강의 잘 듣고 있는데요with 절이 계속 사용하고 있는것 같은데with 절 말고 서브쿼리로 작성해도 상관없나요?그리고 상관없다면 with절하고 서브쿼리 중에서 어떤 쿼리가 더 성능이 좋은 쿼리인가요?
-
해결됨카프카 완벽 가이드 - 커넥트(Connect) 편
auto.evolve 옵션 질문
안녕하세요, 질문이 있습니다. auto.evolve=true로 sink 쪽에 설정하고 source DB의 칼럼 정보를 업데이트 한 후에 레코드를 삽입하지 않으면 토픽에 메시지가 전송되지 않으니 target DB에는 반영되지 않는건가요?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
mysql프로젝트 관련 크롤링 질문
https://davelee-fun.github.io/ 이 사이트 크롤링을 1번 사진처럼 4파트로 분리해서 크롤링후 2번 사진 처럼 만들어놓은 DB 테이블에 insert하는 코드를 작성해보았는데, (3번사진) 크롤링부분에서 잘못된건지 코드가 잘 돌아가지 않습니다. 혹시 어느부분이 잘못됬는지 알수있을까요?import requests from bs4 import BeautifulSoup import re pg=1 if pg==1: #1페이지 크롤링시 res = requests.get('https://davelee-fun.github.io/') #웹사이트 get request 1페이지 soup = BeautifulSoup(res.content, 'html.parser') #html 파싱 items = soup.select('div.card h') product_id=17890001 #promary key 임의설정 page_num=pg for item in items: recom_info=item.select_one('a.text-dark') #추천 product_name=item.select_one('h4.card-text') #상품명 provider=item.select_one('a[target="_blank"]') #제공자 -> teddy register_date=item.select_one('span.post-date') #등록일자 -> 05 jun 2020 SQL = """INSERT INTO product_info VALUES('"""+product_id+"""', '""" + str(recom_info.get_text()) + """','""" + str(product_name.get_text()) + """','""" + str(provider.get_text()) + """', '""" + str(register_date.get_text()) + """','""" +page_num+ """'); """ print(SQL) cursor.execute(SQL)우선 1페이지를 크롤링한 값을 넣어보려고 했습니다.
-
미해결카프카 완벽 가이드 - 코어편
UnknownHostException : kafka
똑같이 아이피 고정해서 했는데 kafka < 라는걸 계속 찾네요 ㅠㅠ192.xx 대역으로 하면 못찾습니다.. 그래서일단은 windows hosts 설정에 kafka 도메인으로 고정IP를 넣어줘서 해결은 했는데..도커로 띄워서 그런걸까요?
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
database.connectionTimezone 옵션 질문
안녕하세요 , "database.connectionTimezone": "Asia/Seoul"위와 같은 Source 커넥터의 timezone 옵션을 지정해도 Source 쪽에서 Timezone을 반영해서 보내는 것이 아니라면굳이 적용하지 않아도 괜찮은걸까요?적용을 해야하는 이유가 있는지 궁금합니다.
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
Debezium snapshot 질문
안녕하세요,Debezium에서 snapshot을 수행할 때 읽어오는 DB 스키마는 커넥터가 어디에 저장해두는건가요?레코드의 경우 config에 설정된 topic에 저장되고, 또 offset의 경우 connect-offsets이라는 내부 토픽에 저장되는 것은 알겠는데, 테이블 DDL 정보는 따로 저장하는 곳이 있는 것인지 궁금합니다.
-
미해결카프카 완벽 가이드 - 코어편
mtputty 액세스가 거부됩니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 쁘띠, mt쁘띠도 삭제해봐도 자꾸 리커넥 메세지가 나옵니다.. 일단 쁘띠는 정상동작합니다 ㅜㅜ
-
미해결Airflow 마스터 클래스
Task의 실행 주체가 헷갈립니다.
안녕하세요, 강의 잘 듣고 있습니다.제목 그대로 task를 실행하는 주체가 헷갈려 질문 드립니다. airflow document를 읽어본 결과 scheduler는 DAG의 시작 시간을 확인한 후에 Executor에게 시작을 지시하는 것으로 보였습니다. Executor의 종류 중 locally하게 실행하는 task의 경우 executor가 직접 실행하고, remotely하게 실행하는 task의 경우 (특히 분산 환경에서 사용되는 Executor; ex. CeleryExecutor)에는 worker 풀을 활용한다고 이해했습니다.Airflow의 경우 default executor가 SequentialExecutor로 설정된다고 하는데, 이는 local executor이므로 worker가 존재하지 않는다고 이해했습니다. 그래서 local executor에도 따로 worker가 존재하는지 궁금하여 질문 남깁니다!감사합니다.
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
db에 이미지 데이터 저장
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 의료영상 데이터 관리를 위해서 db셋업을 해보려고 하는데 이미지데이터같은 경우에는 어떤방식으로 db에 저장을 할수있을까요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
데이터 분석 SQL Fundamentals 강의 할인 문의
안녕하세요 강사님데이터 분석 SQL Fundamentals 할인 계획이 있을까요?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
주피터 노트북 err_connection_refused
안녕하세요, 좋은 강의 잘 수강하고 있습니다.주피터노트북 실행 시, url을 크롬브라우저에 붙여넣어 접근은 가능한데, 주피터노트북 확장자 파일도 정상적으로 열리지만 그 후 다른 상위 폴더접근 또는 다른 파일 오픈 시 jupyter notebook err_connection_refused, 주피터 노트북 사이트에 연결할 수 없음 이라는 경고메시지가 안내됩니다.그래서 매 번 주피터노트북을 다시 실행하여 접근하는 불편함이 있는데 이러한 이유는 무엇이고 어떻게 하면 연결이 끊기지 않고 사용할 수 있는지 문의드립니다. 감사합니다. 😀
-
미해결카프카 완벽 가이드 - 코어편
vi 에서 wq!명령어가 안 먹혀요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이렇게 :wq!했는데도 불구하고 저장하고 나가기 기능이 안됩니다 ㅜㅜ
-
미해결15일간의 빅데이터 파일럿 프로젝트
파일럿 프로젝트 pc 환경 구성 질문입니다.
혹시 docker를 활용해서 실습환경을 구축하여도 문제가 있을까요?
-
미해결카프카 완벽 가이드 - 코어편
강사님 인텔리제이 출력메시지 줄이는 방법 한번만 다시 부탁드립니다.
지난번 강의중에 intellj 메시지 줄이는 방법을 알려주셨는데제가 깜빡 잊고 설정을 하지 않았습니다.다시 그 강의를 찾아보려니 엄두가 나지 않아서 번거로우겠지만 다시 부탁드려도 되는지요?
-
해결됨Airflow 마스터 클래스
python 설치 관련
안녕하세요.python 설치 관련 질문이 있어 문의드립니다 ~ 강의에서는 파이썬 3.7.x 버전 설치 후 python 명령어를 통해 버전을 확인해주셨는데요.강의를 보고 저도 3.8.x 버전 설치 후 (에어플로우와 버전 통일) python 명령어를 통해 버전을 확인해보았는데, 버전이 확인되지 않아 python3 명령어를 사용해보니 버전이 확인되었습니다.구글링을 해보니 파이썬 3버전 부터는 python3 명령어를 사용해야 한다고 하는데강사님 버전은 3버전임에도 불구하고 오류없이 작동하여서 별도의 처리를 해두신건지 궁금합니다.(참고로 제 os는 mac os입니다!)