Spark (스파크) vs MapReduce (맵리듀스) 차이
·
데이터 엔지니어링/Spark
견고한 데이터 엔지니어링 책을 읽으면서 스파크와 맵리듀스가 대규모 데이터를 효율적으로 처리하기 위해 만들어졌다고 하는데, 둘의 차이를 명확히 알기 위해 기록해두는 용으로 블로그를 작성한다.공통점으로는,1. 분산 처리 기반- Spark, MapReduce는 대규모 데이터를 여러대의 컴퓨터(노드)로 나눠서 동시에 처리한다.- 클러스터 환경에서 작동하며, 데이터를 효율적으로 나누고 병렬 작업을 수행한다. 2. 내결함성을 지니다- 노드 하나가 고장난다 하더라도, 데이터와 작업을 다른 노드에서 수행할 수 있기에 복구할 수 있는 구조를 가지고 있다.- MapReduce는 HDFS(Hadoop Distributed File System)를 기반으로, Spark는 RDD(Redsilient Distributed D..
[Spark] 검증 Verification 시간 단축 이슈(Min,Max,Sum)
·
데이터 엔지니어링/Spark
데이터 이관했을 당시 Source Table과 Target Table에 대한 데이터 검증을 경험한 바가 있다.데이터 엔지니어라 함은 데이터 검증을 피할 수가 없는데, 보통은 count로 이를 확인하고 더 나아가서 Min, Max, Sum을 추출하여 데이터 검증을 진행한다.컬럼의 수가 많을 수록, 또한 데이터가 클 수록 이에 대한 검증 시간은 비례하다.기존에는 검증에 대한 로직이 없었으며 작업을 수행해야하는 시간이 다소 짧았었다. 빠르게 검증 로직에 대한 템플릿을 만들었고 데이터가 큰 테이블들은 시간이 오래 걸렸음에도 흐린눈 하며 검증 코드 고도화를 미루다가 하나의 테이블이 생각보다(...) 너~무 오래걸리는 이슈로 인해 로직에 대한 고도화를 진행해야만 했다.(고도화 작업을 진행할때 기존 코드를 보다가 ..
[Databricks] Delta Live Table 이란?
·
데이터 엔지니어링/Spark
델타 라이브 테이블 (Delta Live Table)오늘은 데이터 파이프라인을 간편하게 실행 할 수 있는 델타 라이브 테이블을 설명하고자 한다.DLT란 델타 라이브 테이블이라고 말하며, 스트리밍 및 배치 ETL 방식을 처리할 수 있도록 지원하며 데이터 브릭스에서 제공하는 기능으로, 데이터 파이프라인을 개발 할 수 있는 자동화 서비스이다.  DLT로 처리 시 작업 오케스트레이션, 클러스터 관리, 모니터링, 데이터 품질 및 오류 처리 등을 자동으로 처리할 수 있다.데이터브릭스에서 델타 라이브 테이블을 사용하려면 dlt 라이브러리를 사용하면 되며, 시작하기 위해서는 델타 라이브 테이블의 파이프라인을 우선 생성해주어야 한다.- 파이프라인 실행 모드는 trigger와 continuous로 구분된다.> trigge..
[Databricks] dbutils.widget을 사용하여 데이터 검증 수행하기
·
데이터 엔지니어링/Spark
Databricks를 사용하여 테이블 컬럼 별로 검증 수행하기데이터 엔지니어라 함은 데이터 마이그레이션도 중요하지만, 정합성 검증 또한 중요하다.이번 블로그에 작성할 내용은 데이터브릭스에서 정합성 검증을 진행했던 경험에 대해서 작성해보려고 한다.데이터브릭스는 데이터 분석가와 엔지니어, 데이터 싸이언티스트들이 머신러닝 작업이나 ETL작업을 쉽게 공간을 공유해서 사용할 수 있는 데이터 플랫폼이다. 파라미터 변수들을 동적으로 받아와서 진행할 수 있는데, Databricks에서는 dbutils.widgets기능을 제공한다.사용자가 파라미터에 입력을 해서 데이터베이스와 테이블을 지정하면, 해당 테이블을 자동으로 리프레쉬되어 테이블을 읽는다.따라서 코드를 전부 작성한 뒤, 위젯에 파라미터를 넣기만 하면 각 테이블이..
[AWS] S3 다른 계정간의 Bucket 개체 복사하기
·
데이터 엔지니어링/AWS
Source / Target 으로 분리해서 구축서로 다른 계정을 가진 S3끼리 CLI로 쉽게 개체를 복사하는 방법을 소개하려고 한다.우선, Target에 있는 계정에서 정책을 생성한다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:", "arn:aws:/*" ] }, ..
[AWS] Sagemaker Internet access / VPC access 차이
·
데이터 엔지니어링/AWS
SagemakerAWS의 머신러닝 추론 서비스인 sagemaker를 사용할때면 항상 vpc와 subnet은 고려하지 않고 default vpc에서 사용했다.그러나 이번엔 vpc를 만들고 opensearch를 해당 vpc의 private에 두었기 때문에 sagemaker 또한 해당 vpc에 구축해야 했다.만든 후 sagemaker를 열었더니 커널이 pending 되지 않고 노트북도 열리지 않았다.이후 퍼블릭 액세스와 vpc 액세스의 차이를 알게 됐고 지금 생각해보면 당연한 얘긴데, 일 하다보면 항상 숲이 아닌 나무를 보게 되는 것 같다 ..VPC Access vs Internet Access VPC 전용 vpc를 만들면서 vpc내의 public한 서브넷에 sagemaker를 두고 private subne..
[AWS] TroubleShooting Bedrock InvokeModel Error
·
데이터 엔지니어링/AWS
Antropic Sonnet / Haiqu의 Model issueModelErrorException: An error occurred (ModelErrorException) when calling the InvokeModel operation: The system encountered an unexpected error during processing. Try your request again.Trouble shootingAntropic의 Sonnet과 haiqu를 사용할 때 간헐적으로 모델 이슈 에러가 발생하였다.당시 구글링을 시도할때 Invoke-endpoint의 에러들에 대한 해결방법만 존재했고 ModelErrorException에 관한 내용은 없었다.따라서 저 에러가 난 경우, Try your ..
[AWS] Can't update non dynamic settings [[index.analysis]] for open indices
·
데이터 엔지니어링/AWS
Intro 오픈서치 인덱스 세팅 중 파라미터 값을 변경해야할때, 아래와 같은 오류 메시지가 띄고, 변경이 되질 않는다. [illegal_argument_exception] Can't update non dynamic settings [[index.analysis.analyzer.my_filter.filter]] for open indices [[my-index/[...]]] 이 때는 해당 인덱스를 Close한 후, 파라미터를 다시 변경하고, Open을 진행한다 Console Post POST indexName/_close PUT indexName/_settings "settings": { "index.codec": "best_compression" } POST indexName/_open index cl..