본문 바로가기
728x90

spark35

[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.
[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.
[Airflow] EMR create + Step 제출(Spark job) + StepSensor Dag 구성하기(feat. ETL) 아직까지도 많은 기업에서는 EMR을 원하는 시간대에 띄워서 batch job을 airflow schedule에 맞게 실행시키고 종료시키는 ETL 형태를 많이 사용하고 있습니다. 그래서 이번 포스트에는 Airflow로 EMR을 띄우고, spark job을 제출하고 job이 끝나는 대로 EMR을 종료시키는 DAG를 구성해보겠습니다. Airflow는 미리 구성되어 있다고 가정하고 시작하겠습니다. Airflow 구성부터 해보고 싶으시면 아래의 링크를 참조해주세요. https://spidyweb.tistory.com/449 [Airflow] Airflow cluster, celery executor + flower + RabbitMQ 환경 구성하기 이번 포스트에는 AWS EC2 3대로 구성된 airflow clu.. 2023. 7. 30.
[Spark] Scala Spark 앱 만들기 (feat. Intellij) 이직을 하게 되면서 python이 아닌, scala 언어로 Spark을 돌리고 있었습니다. 언젠가는 scala를 배워봐야지 생각만 했었는데, 생각보다 기회가 앞당겨진 것 같아, 요즘 열심히 scala 언어를 공부하고 있는 중입니다. 그래서 이번 포스트에는 scala언어로 spark앱을 만들고, jar파일로 만들어 보겠습니다. 1. 프로젝트 생성 스칼라 새 프로젝트 생성 build 시스템은 sbt로 지정 settings에서 scala plugins생성 . ├── build.sbt # MergeStrategy.discard case x if x.endsWith("modlue-info.class") => MergeStrategy.discard case x => val oldStrategy = (assembly.. 2023. 6. 17.
[Scala] 스칼라 배우기 3. 스칼라 기본 문법2(함수) 함수(function) def으로 선언 함수를 선언할 때 리턴문과 리턴 타입은 생략이 가능하고, 매개변수의 파라미터 타입은 생략할 수 없음 리턴값이 없는 함수를 선언할 때는 Unit을 이용 함수의 매개변수는 불변 변수이기 때문에 재할당 할 수 없음 리턴 타입을 생략하면 컴파일러가 반환값을 이용하여 자동으로 추론 리턴문이 생략되고, 리턴 타입이 Unit이 아니면 함수의 마지막 값을 리턴 // 함수 선언 def add(x: Int, y: Int): Int = { return x + y } // x는 val 이기 때문에 변경 불가 def add(x: Int): Int = { x = 10 } // 리턴 타입 생략 가능 def add(x: Int, y: Double) = { x + y } // 리턴 타입이 Uni.. 2023. 5. 22.
[Scala] 스칼라 배우기 2. 스칼라 기본 문법1(진입점, 객체, 자료형, 문자열, 변수) Scala의 진입점 싱글톤 객체(object)가 main 함수를 구현하는 방법 // main 함수를 생성App 을 상속하여 실행하는 방법 object S01_HelloWorldObject { def main(args: Array[String]): Unit = { println("Hello World main") } } 싱글톤 객체(object)가 App 트레잇을 상속하는 방법 App 트레잇을 상속하는 방법은 extends로 App 트레잇을 상속하고, 실행하고자 하는 코드를 작성하면 순차적으로 실행 object S01_HelloWorld extends App { println("Hello World") } App 트레잇이 내부적으로 main() 함수를 구현해 주기 때문에, 첫번째 방법과 동작 방식의 차이는.. 2023. 5. 14.
[Data Engineering] CCA Spark and Hadoop Developer Exam(CCA175) 정보와 준비 자료 1. 시험 소개 1) 자격증 분류 cloudera 주관 CDH(Cloudera Distribution Including Apache Hadoop) , HDP(Hortonworks Data Platform) 자격증 중, CCA(Cloudera Certified Association)에 해당하는 자격증 2) 자격증 소개 Apache Spark와 Cloudera Enterprise tool을 이용한 데이터 수집, 가공 ,처리를 다루는 자격증 문항 수 Cloudera Enterprise cluster에서 수행하는 8 ~ 12개의 수행능력 기반의(hands-on) 과제 시간 제한 120분 합격 점수 70% 이상 문제의 언어형식 영어 시험 비용 US$295 Spark 코딩 시 사용 가능 프로그래밍 언어 (결과만 중.. 2023. 3. 7.
728x90