일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 개발자혜성
- 클라우데라
- 하둡에코시스템
- redis bloom filter
- apache spark
- 개발자
- cloudera
- kubernetes
- eks
- 데이터엔지니어링
- 블로그
- kafka
- 하둡
- AWS SageMaker
- DataEngineering
- dataengineer
- Terraform
- Python
- mlops
- 데이터엔지니어
- BigData
- spark
- pyspark
- hadoop
- 빅데이터
- recommendation system
- Data engineering
- Spark structured streaming
- 추천시스템
- 빅데이터플랫폼
- Today
- Total
목록Python (6)
Hyesung Oh
개요 Spark에서는 JDBC api를 통해 접근할 수 있는 datasource(dbms)를 지원합니다. jdbc datasource를 사용하기 위해선 JDBC interface를 구현한 Driver class가 필요합니다. *현재 사용 중인 mysql-connector-java-8.0.23을 기준으로 작성했습니다. spark.read.jdbc option으로 driver class path를 아래와 같이 설정해주면 됩니다. driver class path: com.mysql.cj.jdbc.Driver # Read from MySQL Table df = spark.read \ .format("jdbc") \ .option("url", "jdbc:mysql://localhost:3306/emp") \ .o..
서론 사내 인프라는 개발 환경별로 별도 AWS 계정으로 운영중이고, 만찬가지로 팀에서 운영중인 데이터 인프라 또한 별도 AWS 계정으로 분리되어있다. Datalake로 부르는 S3는 운영환경 계정에 존재하며, 이는 빅데이터 특성상 방대한 양의 데이터를 환경별로 관리하는데 드는 비용과 데이터 저장 비용을 고려했을 때 합리적인 선택지였다. 하지만 이로 인해 인프라적인 복잡도가 다소 올라가긴하였다. Batch, Streaming workload는 모두 EKS위에서 동작 중이지만, RDBS와 S3, Athena 등의 데이터 소스는 모두 운영환경에만 존재하기 때문이다. 이 과정에서의 문제 해결경험들을 정리해보려한다. 상황 이해 상황은 아래 그림과 같다. 그림에선 생략했지만 Application은 Data 환경의 ..
조금만 검색해보면 spark Performance tuning과 관련된 좋은 참고자료들이 많이 있습니다. 그 중에서 실제 팀에서 적용하여 효과를 보고있는 내용만 선별하여 공유하고자 합니다. 크게 코드 레벨에서의 최적화와 configuration 레벨에서의 최적화 두 가지가 있을 것 같습니다. 1. Code Level Opimization point 1. filter -> aggregation. aggregation을 하게 되면 driver 노드에 많은 부하가 있을 수 있습니다. 따라서 이럴 경우 reduceByKey를 이용하여 driver로 전송되는 데이터 사이즈를 최대한 줄이는게 포인트입니다. point 2. Iterator 최대한 활용하기 driver node로 데이터를 불러와서 작업을 해야하는 경우..
Pyspark로 이전하면서 느꼈던 가장 큰 아쉬움 한가지는 바로, Scala의 Dataset API가 지원되지 않는다는 점이었습니다. Dataset API를 통해 객체지향 인터페이스를 마음껏 누리면서도 Spark tunsgten project 이후 (Scala code -> java object -> 자연스레 cpu, memory 오버헤드) CPU, Memory 작업에서 많은 최적화가 이루어져 성능도 우수한 편이었기에 개인적으로 선호했기 때문입니다. Pyspark에서 이러한 아쉬움을 달래기 위해 노력한 과정과 그 과정에서 바뀌게된 생각들을 공유하고자 합니다. Code Style Guide 코드 스타일 가이드는 https://github.com/palantir/pyspark-style-guid를 우선적으로..
Scala Spark에서 Pyspark로의 이전을 진행하며 겪었던 시행착오와 고민들을 공유하고자 합니다. 프로젝트 구조 spark 아래에 core, tasks, util 폴더를 두었습니다. tasks: spark-submit 호출시 PY_FILE로 넘겨주는 python file이며 spark context를 초기화하며 pyspark dataframe api를 이용하여 비즈니스로직을 구현합니다. core: 모든 Spark application에서 데이터 로드, 처리, 적재시 공통적으로 사용되는 논리적인 개념을 추상화한 모듈을 정의했습니다. 아래에서 자세히 다루겠습니다. util: tasks 또는 core에서 공통적으로 사용되는 패턴 또는 utility 기능들을 정의했습니다. 1. tasks - app - ..
Posting 목적 Hive, RDBMS, HBASE, HDFS 등.. 공부하다 보면 각 시스템들의 특징과 차이점이 명확히 구분히 안가고 혼동되는 경우가 잦았습니다. 이에 이번 기회에 정리하게 되었습니다. Hive vs RDBMS 출처 : stackoverrun.com/ko/q/1751170 요약하면, 다음과 같다. Hive RDMBS Is Database No. Its called Data Warehouse Yes SQL No, but SQL-Like query data stored in various databases - you can use sqoop to import data from RDBMS to Hive Yes OLTP/OLAP OLAP OLTP Record Level manipulation..