프로그래밍 33

[AWS] S3 Event -> SQS 사용방법

1. SQS 권한설정 { "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SQS:SendMessage" ], "Resource": "sqs의 arn을 여기에 붙여넣기 ", "Condition": { "ArnLike": { "aws:SourceArn": "여기에 버킷의 arn을 붙여넣기" }, "StringEquals": { "aws:SourceAccount": "aws account-id를 여기에 붙여넣기" } } } ] } 가이드 링크: http..

프로그래밍/aws 2023.11.02

[aws] 몇가지 기능 간단정리

RDS OLTP → 규모가 작은 데이터를 사용시 유용 OLAP → 매우 큰 데이터를 불러올 떄 사 RDS 백업 기능 AB →자동 백업 그날 생성된 스냅샷을 참고하여 생성 (약간의 지연 존재 가능) DB 스낵샷 → 원본 인스턴스를 삭제해도 스냅샷이 존재 (AB와는 다름) 원본 백업 엔드포인트 → original , 백업 엔드포인트는 → restored가 있다. [ ] Multi AZ 원래 있는 DB에 변화가 생길때 복제본이 만들어지며 자동으로 관리가 이루어짐 DB가 문제가 생기면 자동으로 다른 복제본을 사용 성능개선을 위해서 사용하는것은 아님 [ ] Read Replica 읽기 전용 복제본이 생성 읽는 작업시 효율성을 극대화 할 수 있음 최대 5개까지 생성 가능하다 Read Replica 의 Read Re..

프로그래밍/aws 2023.07.27

[Scala]Tuple, Array, List, Set

*Tuple 튜플은 원소가 변하지 않는다(불변성)을 가지고 있다 다양한 타입의 원소를 튜플 안에 넣을 수 있다. *예시 val res=(1,"team",true) //res: (Int, String, Boolean) = (1,team,true) println(res._1) // 1 println(res._2) // "team" println(res._3) // true /*위와 같이 튜플의 특정 원소 출력은 ._(원소번호)로 선택할 수 있다. (중요) 여기서 특이한 점은 파이썬과 다르게 첫번째 원소의 번호가 1번인것이다.*/ *Array 튜플과 다르게 원소를 변화시킬 수 있다. 모든 원소가 같은 타입을 가져야 한다. *예시 //기본적인 array 생성 방식 val a = new Array[String]..

[Scala]공부 시작 with udemy

Spark를 사용할때 python보다 scala가 더 빠르다는것을 원래 부터 알고는 있었지만 어떻게 도전해야 할지 막막했는데 마침 한이음에서 udemy 강의를 무료로 다 들을 수 있는 계정을 받을 수 있어서 도전해보려고 한다. 우선 스칼라의 기본 문법등을 공부하고 scala spark에 대한 내용도 포스팅 해볼 예정이다. 시험도 끝났으니 우선 시작 강의는 이 강의로 시작해서 Part2, 3 까지 다 듣고 정리해봐야겠다.

[Spark] MLlib 정리

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. *Spark MLlib의 장점 데이터를 시스템에 맞게 다운샘플링 하지 않고 데이터 준비 및 모델 구축을 하나의 에코시스템으로 구축 가능 선형으로 확장되는 O(n)으로 방대한 양의 데이터를 확장할 수 있다. *MLlib 파이프라인 구성 #파이프라인에 적용할 샘플 데이터 8대2로 분리 filePath="""/databricks-datasets/learning-spark-v2/sf-airbnb/sf-airbnb-clean.parquet""" airbnbDF=spark.read.parquet(filePath) airbnbDF.select("neighbourhood_cleansed", "room_type", "bedrooms..

[Spark] 델타 레이크 구축

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. *델타 레이크란 ? 리눅스 파운데이션에서 호스팅하는 오픈소스 프로젝트이며. 다른 것들과 유사하게 트랜잭션 보증을 제공하고 스키마 시행 및 발전을 가능하게 하는 오픈 데이터 저장 형식이다. *델타 레이크가 지원하는 것 정형화 스트리밍 소스 및 싱크를 사용하여 테이블 읽기 및 쓰기 이전 버전으로 롤백 가능 스키마를 명시적으로 변경하거나 데이터 프레임의 쓰기 중에도 임시적으로 스키마를 병합하여 변경가능 여러 동시 작성기 간의 직렬화 가능한 격리 *Spark로 델타 레이크 구성 내용들 1.대화형 쉘을 사용하여 연결 pyspark --packages io.delta:delta-core_2.12:0.7.0 이와 같이 터미넬에서..

[Spark] 데이터 베이스, 데이터 레이크 , 레이크 하우스

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. *스토리지 솔루션 기본적으로 데이터 파이프라인을 구축할 때에는 스토리지 솔루션의 선택에 따라서 파이프라인의 견고함과 성능을 결정한다. 이런 스토리지 솔루션은 데이터베이스에서 데이터 레이크, 더 나아가서 데이터 레이크하우스로 넘어가게 되었다. *최적의 스토리지 솔루션에 필요한 속성 확장및 성능 트랜젝션 지원 다양한 데이터 형식 지원 다양한 워크로드 지원 개방성 *데이터베이스 *데이터 베이스 특징 데이터베이스는 구조화된 테이블을 SQL쿼리를 사용하여 읽을 수 있으며 데이터 저장 및 처리를 모두 최적화 가능 온라인 트랜잭션 처리 워크로드 ->간단한 쿼리로 높은 동시성, 짧은 지연 시간이 특징 온라인 분석 처리 -> OLA..

[Spark] 스트리밍 성능 튜닝 시 고려할 점

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. 기본적으로 정형화 스트리밍을 할때 성능튜닝은 기존 포스팅에 썼던 방법을 사용해도 되지만 몇가지 고려해야 할 점들이 있다. *고려할 점 1. 클러스터의 자원 배치 스트리밍 쿼리를 실행하는 클러스터들은 24/7로 돌아가기 때문에 자원을 적절하게 배치해야 한다 스트리밍 쿼리의 특성에 맞춰 자원 할당 해야한다. 무상태 쿼리(코어 필요), 상태 정보 유지 쿼리(메모리 필요) 2. 셔플을 위한 파티션 숫자 스트리밍의 경우 셔플 숫자가 정형화에 비해 적지만 너무 잘개 쪼개면 오버헤드가 발생. 상태 정보 유지 연산에 의한 셔플은 훨씬 큰 오버헤드를 발생. 기본 셔플 파티션인 200을 코어 숫자 대비 두세 배 많은 정도로 수정 3...

[Spark] 스트리밍 집계, 조인

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. * 스트리밍 집계 방법 스트리밍의 집계 방법으로는 크게 시간과 연관이 있거나 없거나로 2가지의 집계가 있다. 1. 전체 집계(시간과 상관 없음) 이름 그대로 스트림으로 생기는 데이터를 모두 집계하는 방법이다. stream_count=sensor.groupBy().count() 이 예시는 sensor라는 스트리밍 데이터 프레임의 집계를 한 예시이다. *여기서 주의해야 하는 점은 정적 데이터 같은 경우에는 .count()를 바로 사용해도 되지만 스트리밍 데이터는 집계 결과를 지속적으로 업데이트 해야 하므로 .groupBy() or .groupByKey()와 같은 함수와 같이 사용 해야한다. 2. 그룹화 집계(시간과 상관..

[Spark] Spark 스트리밍 쿼리

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. *스트리밍 쿼리 처리 단계 1. 입력 소스 지정 스트리밍 처리도 배치 처리와 동일하게 데이터 프레임을 지정해야 한다. 배치에서는 spark.read를 사용 했지만 스트리밍에서는 spark.readStream을 사용해주면 된다. #파이썬 예제 stream_df=(spark .readStream.format("socket") .option("host" ,"localhost") .option("port", 9999) .load()) 2. 데이터 변형 데이터 변형 작업은 말 그대로 입력받은 데이터를 어떻게 처리할지를 프로그래밍하는 단계이다. #예시 from pyspark.sql.functions import * words=..