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기능을 제공한다.사용자가 파라미터에 입력을 해서 데이터베이스와 테이블을 지정하면, 해당 테이블을 자동으로 리프레쉬되어 테이블을 읽는다.따라서 코드를 전부 작성한 뒤, 위젯에 파라미터를 넣기만 하면 각 테이블이..
[Spark] Json parsing
·
데이터 엔지니어링/Spark
spark sql을 사용하여 json의 복잡한 유형을 파싱하고 다루는 방법을 알아보자spark sql support module pyspark.sql.fuctionsfrom pyspark.sql.functions import *from pyspark.sql.types import * 중첩된 열에 대해 "." 을 사용해서 가지고 올 때schema 먼저 선언1. using a Structschema = StructType().add("a", StructType().add("main", IntegerType())) 2. using a mapschema = StructType().add("a", MapType(StringType(), IntegerType())) 중첩된 열에 대해 "*" 를 사용해서 b 필드를 ..
[Databricks] Private VPC 생성하기 (with AWS Cloud)
·
데이터 엔지니어링/Spark
Private VpcPrivate vpc는 흔히 고객 관리형 VPC라고 할 수 있으며 오늘은 고객의 VPC에서 Databricks 작업 영역을 만들어 볼것이다.https://docs.databricks.com/en/administration-guide/cloud-configurations/aws/customer-managed-vpc.html Databricks documentation docs.databricks.com 기본적으로 데이터브릭스는 클라우드 위에서 존재하기 때문에, 클러스터 생성과 스토리지 또한 클라우드 위에존재한다는 것을 알아야 한다.우선, 데이터브릭스 작업영역을 만들기 위해서 3가지 차례로 진행하면 되는데,1. 자격증명구성2. 저장소 구성3. 네트워크 구성이다.1. 자격 증명 구성 iam..
[Databricks] jdbc connect
·
데이터 엔지니어링/Spark
Northwind.mdb를 databricks와 jdbc로 연결 jdbc:ucanaccess는 Microsoft Access 데이터베이스에 jdbc 를 통해 연결하기 위한 URL 스키마 중 하나 ucanaccess.jar , 외 2개 총 4개의 jar 다운로드 후 클러스터 라이브러리에 설치 mdb를 dbfs에 수동 load한다 [mdb는 별도로 user, password 정보 필요없음] import org.apache.spark.sql.jdbc.{JdbcDialect, JdbcDialects} case object MSAccessJdbcDialect extends JdbcDialect { override def canHandle(url: String): Boolean = url.startsWith("jd..
[Databricks] from Kafka to Databricks migration
·
데이터 엔지니어링/Spark
카프카란? 각 DB와 시스템 사이에 kafka를 도입하여 보내는 쪽(producer)과 받는 쪽 (consumer) 신경 쓸 필요 없이 kafka에서 중개역할 수행 controller 각 broker에게 담당 파티션 할당 수행 broker 동작 모니터링 관리 kafka broker (=server) 실행된 Kafka application server를 의미함 producerdprp message를 받아서 offset 할당 apache zookeeper (=message 관리자) 여러 대의 broker를 중재하고 연결하는 역할 데이터 연계 시 broker에게 데이터를 전달하는 코디네이터 역할을 수행함 broker의 메타 데이터 저장 및 공유 데이터를 주고받기 위해 사용되는 Java library kakfa..