본문 바로가기
728x90

전체 글313

[Database] Redshift Procedure를 airflow로 제출하기 (error 정리) 에러 airflow에서 redshift를 pyscogp2를 이용하여 연결하고, procedure를 제출했는데, 다음과 같은 에러가 있었다. psycopg2.errors.InvalidTransactionTermination: ROLLBACK cannot be invoked from a procedure that is executing in an atomic context. HINT: Try calling the procedure as a top-level call i.e. not from within an explicit transaction block. Or, if this procedure (or one of its ancestors in the call chain) was created with SE.. 2023. 10. 20.
[Spark Tuning] Spark Memory 와 JVM 정리 spark memory를 정리하기 전에 JVM을 알아야 합니다. 왜냐하면 spark는 Java 가상머신(JVM) 기반으로 동작하기 때문이고, 다른 언어(Python,R)로 작성한 spark code도 결국에는 Executor의 JVM에서 실행할 수 있는 Code로 알아서 변환하여 실행되기 때문입니다. JVM(Java Virtual Machine) 자바를 실행하기 위한 가상 기계(컴퓨터) * Java compiler는 JDK를 설치하면 bin 에 존재하는 javac.exe 1. runtime Data Area Runtime Data Area는 JVM이 프로그램을 수행하기 위해 OS로부터 별도로 할당받은 메모리 공간을 말한다. Runtime Data Area는 크게 5가지 영역으로 나눌 수 있습니다. 1) .. 2023. 10. 17.
[Network] nslookup (DNS-domain name service 조회) 정리 이번에 sub-domain을 신청하면서 신청이 잘 되었는지 확인하기 위해 사용한 nslookup 명령어를 정리 해보겠습니다. nslookup이란? nslookup 명령어는 windows, linux에서 사용하는 네트워크 디버깅 관련 명령어로, DNS 서버에 직접 DNS 쿼리를 하고 그 결과를 출력해줌 DNS 설정이 정상적인지, 혹은 DNS 서버가 정상적으로 동작하고 있는지, 네트워크가 의도한대로 설정되어있는지 등을 확인할 수 있음 nslookup은 리눅스 명령어지만, 맥OS나 윈도우에도 같은 이름을 가진 명령어가 있음 1. 사용법 $ nslookup [DOMAIN] google.com 도메인 nslookup $ nslookup google.com * nslookup으로 도메인의 IP 주소를 조회할 때 프.. 2023. 9. 30.
[DataBase] RDBMS 이관 PostgreSQL to MySQL, 여러가지 방법과 에러 정리 이번 포스트에는 회사업무중에 필요에의해 기존에 있던 PostgreSQL DB를 MySQL로 이관시켜야 하는 요구사항이 있었습니다. 보통 PostgreSQL이 더 관대한 RDBMS로써 이기종 DBMS간 이관을 할 때, 찾아보니 MySQL → PostgreSQL은 많이 사례가 있고 자료가 있었지만, 우리의 경우 반대의 경우 였기 때문에 많은 리서칭이 필요했습니다. 이관 대상 대상 구분 대상 여부 스키마(Schemas) Y(MySQL에서는 Databases) 테이블(Tables) Y 제약사항(Constraints) Y Index Y Sequence Y(Auto Increments) User / Role - 이관 방법 1. PostgreSQL dump file https://www.postgresql.org/d.. 2023. 9. 29.
[Spark] cache() vs persist() 차이점 정리 (feat. storage level) cache() test_df.cache() # test_df를 캐싱 test_df.storageLevel # org.apache.spark.storage.StorageLevel = StorageLevel(disk, memory, deserialized, 1 replicas) persist() import org.apache.spark.storage.StorageLevel # storage 명시를 위한 library import test2_df.persist(StorageLevel.MEMORY_AND_DISK) # test2_df에 persist를 하면서 storage lvl을 명시 test2_df.storageLevel # org.apache.spark.storage.StorageLevel = Stora.. 2023. 9. 19.
[Spark] Spark Cluster mode vs Client mode (feat. 왜 EMR Serverless는 Client mode일까?) EMR Serverless가 client mode로 설정되어 있는 것을 보면서 왜 client 모드 일까? cluster모드는 안되는 걸까? 라는 의문점을 가졌었고, 막상 두 개의 차이점을 설명하려 해봐도 명확히는 설명을 할 수 없어서 이번 기회에 비교하여 정해보겠습니다. Spark Driver 비교해보기에 앞서 driver 개념이 두 개를 비교할 때 필요 하므로, Spark Driver부터 간단하게 짚고 넘어가겠습니다. 프로그램의 main()메소드가 실행되는 프로세스 Spark Context, Spark Session을 생성하고 RDD를 만들고 Transformation, action 등을 실행하는 사용자 코드를 실행 DF, DS, UDF를 생성하고 애플리케이션 정보 유지 관리를 담당 Cluster M.. 2023. 8. 30.
[Airflow] Airflow DAGs 이상감지, 알림받기, 결과전송 (EmailOperator, Slack) 이번 포스트에는 Airflow DAGs이 success 및 failed 또는 Task중에 보내고 싶은 결과가 있는 경우 전송하는 방법에 대해 정리해보겠습니다. 방법으로는 EmailOperator와 Slack을 사용하는 방법으로 크게 2가지가 있습니다. EmailOperator 1. 준비 사항 1) GMAIL 계정 생성 EmailOperator를 사용하기 위해서는 stmp로 설정할 host가 필요합니다. 저는 gmail을 사용하기로 했고 새로운 계정을 하나 만들었습니다. 2) IMAP 켜기 GMAIL → 설정 → 모든 설정 보기 전달 및 POP/IMAP → IMAP 사용 3) 보안 설정 구글 계정 관리 → 보안 → 2단계 인증 앱 비밀번호 클릭 메일, 기기 선택 16자리 비밀번호가 생성 되는데, 보관했다가.. 2023. 8. 30.
[Spark] EMR Serverless + Airflow로 spark job 제출해보기 (EmrServerlessStartJobOperator, boto3 + PythonOperator) 이번 포스트는 EMR Serverless로 전환하면서 생긴 꿀팁들과 Airflow로 EMR Serverless에 Spark job을 제출하는 것을 포스팅하려고 합니다. 이번 포스트의 목차 EMR Serverless란? EMR Serverless로 전환 이유 EMR Serverless로 전환 대상 EMR Serverless 생성 방법 EMR에 Airflow로 Spark job 제출하는 방법(EmrServerlessStartJobOperator) EMR에 Airflow로 Spark job 제출하는 방법(boto3 + PythonOperator) 전환 시 얻은 효과(성능, 비용) EMR Serverless란? EMR(Elastic Map Reduce) 서비스를 인프라 관리할 필요 없이 Serverless로서 .. 2023. 8. 27.
[Spark Tuning] Spark 3.x 버전 특징 정리 이번 포스트에는 spark 2.x 와 spark3.x의 특징을 비교해보고 spark 3.x 버전의 주요 특징과 성능에 대해서 포스트해보겠습니다. spark 3.x버전의 특징을 통해 눈에 띄게 성능의 향상을 본 workload가 아직은 없기 때문에, 관련한 포스트는 추후에 올리도록 하겠습니다. Spark 2.x vs Spark 3.x spark 2.x spark 3.x Language support python 2.x,3.x, scala 2.12까지, java8+ python 3.6+, scala 2.12+, Java 8 prior to version 8u92 support is deprecated Catalyst Optimizer Rule + Cost based optimizer • Table stati.. 2023. 8. 10.
728x90