[Spark/Airflow] Airflow Dag 비활성화했는데도 스케줄링 도는 경우
·
Data Engineering/Spark
1.  문제 상황Airflow 데이터 적재 테스트하다가 리소스 문제가 발생했고, 실행 중인 DAG를 전부 비활성화했는데도 계속 스케줄링이 걸려 40 초 간격으로 실행되었다.2. 원인문제는 DAG에서 SPARK를 사용했는데, SPARK 세션을 전역변수로 선언하고 사용했다.3. 해결 방법전역변수 지우고 함수마다 세션 만들어 수정했더니 해결 완료. 스파크 세션 여러개 만드는 게 비효율적일 것 같아서 전역 변수로 설정했는데, 이러면 리소스 문제가 발생한다. 스파크 세션을 함수 간 XCOM으로 넘기기에는 너무 크다.
[Spark] decimal 데이터 타입
·
Data Engineering/Spark
Oracle DB에서 NUMBER 데이터 타입이던 컬럼이 Spark dataframe으로 변환하면 decimal 데이터 타입으로 바뀌어서 찾아보았다. Decimal Type, Long Type, Double TypeOracle 데이터베이스에 있는 NUMBER 데이터 타입을 Spark dataframe으로 변환하게 되면 기본적으로 decimal 데이터 타입으로 매핑되어 변환된다.  decimal 외에 Long Type과 Double Type으로 변환할 수 있다. Decimal Type숫자를 소수점까지 아주 정확하게 표현할 수 있다.최대 유효 숫자를 제공한다.그만큼 연산도 정확하게 할 수 있다. 소수점 하나에도 민감한 재무 데이터에 많이 쓰인다.단 숫자가 많이 필요하다. Long TypeJava의 long과..
[Airflow] dag scheduling was skipped, probably because the dag record was locked 에러 해결
·
Data Engineering/Airflow
dag scheduling was skipped, probably because the dag record was locked [에러 해결] task = PythonOperator(task_id="start_task", python_callable=db_connection, queue='aml') Airflow Dag에서 task 옵션 적어 줄 때 queue를 누락했다. 분명 코드에는 잘못된 게 없는 것 같은데, airflow web ui로 보면 계속 queued 상태. 어떤 queue에 넣어 줄 건지 꼭 기재하기. 이와는 별개로 다른 부가적인 원인 때문에 자주 발생하는 오류 같다. DAG 오류 날 때는 Yarn, Spark 동시에 체크하면서 모니터링할 것.
[Python] inconsistent use of tabs and spaces in indentation 에러
·
Python
inconsistent use of tabs and spaces in indentation 들여쓰기 시, 탭과 스페이스바를 혼용해서 사용했을 때 나타나는 오류이다. 들여쓰기 두 번 해야 하는데 스페이스 네 번, 탭 한 번 눌러서 저 오류가 떴었는데, 탭 두 번으로 고쳤더니 해결되었다.
[Airflow/Python] ValueError:Fernet key must be 32 url-safe base64-encoded bytes
·
Data Engineering/Airflow
ValueError:Fernet key must be 32 url-safe base64-encoded bytes DB 접속 정보를 config.ini 파일로 관리하고 있었는데 Key 값의 형태를 바꿔 주었더니 해결되었다. [고치기 전] [dev] key=b'adkljasflkdjfioe' [고친 후] [dev] key=adkljasflkdjfioe 작은 따옴표와 앞에 bytes 표시 제거했더니 잘된다. 처음에는 인코딩 문제인 줄 알고 https://stackoverflow.com/questions/53897333/read-fernet-key-causes-valueerror-fernet-key-must-be-32-url-safe-base64-encoded 스택오버플로우에 있는 해결 방법을 적용했으나 안 됐..
[SQL/DATABASE] 문자열 데이터에서 숫자만 보기
·
Study/SQL
[SQL/DATABASE] 문자열에서 숫자만 추출하기 문자열로 된 시간 데이터에 조건을 걸고 싶은데 한글이 섞여 있고 숫자로만 이루어지지 않은 데이터들이 있었다. 이때 REGEXP_REPLACE(TIME,'[^0-9]') 이렇게 사용하면 문자열에 있는 숫자만 보여 준다. SELECT TIME FROM TABLE WHERE REGEXP_REPLACE(TIME,'[^0-9]');