Tools 42

Spark DataSet

Apache Spark에서 DataSet은 데이터를 강력하게 타입화된 방식으로 처리할 수 있는 분산 컬렉션입니다. DataSet API는 Spark 1.6에서 도입되었으며, DataFrame API와 RDD의 장점을 결합합니다. DataFrame이 제공하는 최적화된 실행 엔진을 이용하면서도, RDD처럼 컴파일 시간에 타입 안정성을 제공합니다. python에서의 DataSet 예제다음은 python를 사용한 DataSet 예제입니다. 이 예제에서는 간단한 클래스 Person을 정의하고 이를 이용하여 DataSet을 생성하고 조작하는 방법을 보여줍니다. from pyspark.sql import SparkSessiondef main(): # SparkSession 초기화 spark = Sp..

Tools/Spark 2024.05.29

Spark DataFrame의 그룹화 예제

1. 그룹화표현식을 이용한 그룹화groupBy 메소드는 하나 이상의 컬럼을 기준으로 데이터를 그룹화하며, 이 때 문자열이나 컬럼 객체(Column)를 직접 지정할 수 있습니다. 그룹화된 데이터에 대해 집계 함수를 적용하여 각 그룹의 요약 정보를 계산할 수 있습니다.import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.functions._val spark = SparkSession.builder.appName("Grouping Example").getOrCreate()import spark.implicits._// 예제 데이터 프레임 생성val df = Seq( ("Banana", 1000, "USA"), ("Carrot", 1500,..

Tools/Spark 2024.05.08

Spark 다양한 데이터 타입 다루기

1. Boolean 데이터 타입Boolean 타입은 True 또는 False 값을 가질 수 있습니다. 조건에 따라 데이터를 필터링할 때 주로 사용됩니다.import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.functions._val spark = SparkSession.builder.appName("Boolean Example").getOrCreate()// 데이터 프레임 생성val data = Seq((1, true), (2, false), (3, true))val df = spark.createDataFrame(data).toDF("id", "isActive")// Boolean 조건을 사용한 필터링val filteredDf = df..

Tools/Spark 2024.05.08

Git Cherry-pick, Rebase

Cherry Pick과 Rebase는 두 가지 다른 Git 작업으로, 둘 다 브랜치 간의 커밋을 다루는 데 사용됩니다. 이 두 명령어는 개별 커밋의 재배치나 선택적 병합을 가능하게 하여 코드베이스의 유지 관리를 더 유연하게 합니다. Cherry Pick Cherry Pick은 다른 브랜치에서 특정 커밋 하나 또는 여러 개를 선택해서 현재 브랜치에 적용할 때 사용합니다. 이 방법은 특정 변경사항만을 현재 작업중인 브랜치로 가져오고 싶을 때 유용합니다. 주요 사용 사례 특정 기능이나 버그 수정이 포함된 커밋을 하나의 브랜치에서 다른 브랜치로 이전하고 싶을 때 사용합니다. 대규모 병합이 필요 없는 작은 변경사항을 관리할 때 유용합니다. 작업 과정 원하는 커밋의 해시 ID를 찾습니다. git cherry-pic..

Tools/Git 2024.04.14

Git Reset 과 Revert

Git에서 reset과 revert 명령은 둘 다 과거의 커밋으로 작업을 되돌리는 데 사용되지만, 사용 방식과 영향이 크게 다릅니다. 1. Git reset reset 명령어는 현재 브랜치의 특정 상태로 되돌립니다. 이 과정에서 이후의 커밋 기록이 변경되거나 삭제될 수 있으므로 주의해서 사용해야 합니다. 용도: 주로 로컬에서 작업을 잘못 했을 때 이전 상태로 되돌리기 위해 사용합니다. 방식: reset 명령어는 --soft, --mixed, --hard 세 가지 옵션을 제공합니다. Reset 예시 - 최초 커밋후( text.txt에 값이 1이 있음 ) commit A( text.txt값을 A변경 후에 test2.txt 파일을 add ) 한 상황 1. soft 인덱스(Staged Area)를 유지하면서 H..

Tools/Git 2024.04.13

Spark SQL과 Hive를 통한 데이터 처리

Spark와 Hive스파크 SQL과 Hive의 관계:스파크 SQL은 Apache Spark의 모듈 중 하나로, SQL과 HiveQL 쿼리를 사용하여 데이터를 처리할 수 있습니다. 이를 통해 사용자는 복잡한 데이터 변환과 분석을 SQL 형태로 간단히 수행할 수 있으며, 내부적으로는 스파크의 RDD(Resilient Distributed Datasets)와 DataFrame API를 사용하여 높은 처리 속도와 효율성을 제공합니다.Hive는 데이터 웨어하우스 인프라를 제공하는 Apache 프로젝트로, SQL과 유사한 HiveQL을 통해 빅데이터를 쿼리, 요약, 분석할 수 있습니다. Hive는 Hadoop 위에서 동작하며, 대용량 데이터셋의 저장과 처리를 위해 설계되었습니다.연동 방법스파크 SQL은 Hive와 ..

Tools/Spark 2024.03.26

K8S Ingress & Egress Gateway

Isto Gateway Istio는 쿠버네티스와 같은 컨테이너 오케스트레이션 시스템 위에서 동작하는 오픈 소스 서비스 메시(service mesh) 솔루션입니다. 서비스 메시는 마이크로서비스 간의 통신을 관리하고, 제어하며, 보안을 강화하는 데 사용되는 인프라 계층입니다. Istio는 마이크로서비스 아키텍처 내에서 서비스 간의 통신을 쉽게 만들어주고, 트래픽 관리, 서비스 간의 인증과 인가 처리, 서비스 간의 데이터 모니터링과 같은 기능을 제공합니다. 기본 구성 요소 Istio는 다음과 같은 주요 구성 요소로 이루어져 있습니다: Envoy Proxy: 모든 서비스 인스턴스 옆에 배치되는 경량의 사이드카 프록시. Envoy는 Istio의 데이터 플레인을 구성하며, 모든 진입 및 진출 트래픽을 중재하고, 고..

Tools/K8S 2024.03.25

Spark RDD 저장과 캐싱

RDD의 저장 RDD 저장에 대한 개념은 RDD가 메모리에 저장되거나 디스크에 저장될 수 있다는 것을 의미합니다. 저장 방법은 다음과 같이 세분화됩니다: RDD 스토리지 레벨 1. 메모리 저장 (In-Memory Storage) MEMORY_ONLY: RDD를 JVM(Java Virtual Machine)의 힙 메모리에만 저장합니다. 이 방식은 가장 빠른 읽기 속도를 제공하지만, 메모리 용량이 제한적이기 때문에 모든 데이터를 저장할 수 없을 경우 일부 데이터를 잃어버릴 수 있습니다. MEMORY_AND_DISK: RDD의 일부를 메모리에, 나머지를 디스크에 저장합니다. 메모리 용량을 초과할 경우, 초과하는 데이터는 디스크에 저장됩니다. 이 방법은 메모리 용량을 초과하는 데이터를 처리할 때 유용하지만, 디..

Tools/Spark 2024.03.21

Spark 브로드캐스트 변수(Broadcast Variables)와 어큐뮬레이터(Accumulators)

브로드캐스트 변수(Broadcast Variables) 브로드캐스트 변수는 클러스터의 모든 노드에 큰 읽기 전용 값을 효율적으로 분산하기 위한 Spark의 메커니즘입니다. 이 변수들은 모든 작업 노드에서 접근할 수 있도록 메모리에 캐시되므로, 데이터를 각 노드에 복사하지 않고도 공유할 수 있습니다. 브로드캐스트 변수는 일반적으로 전체 작업에서 공통적으로 사용되는 대규모 데이터 세트(예: 참조 데이터, lookup 테이블)에 사용됩니다. val spark: SparkSession = ... val largeLookupTable = spark.sparkContext.broadcast(loadLargeLookupTable()) spark.sparkContext.parallelize(data).map { ite..

Tools/Spark 2024.03.21

Spark RDD 연산 예제 모음

TransFormation 연산 1. map map 함수는 RDD의 각 요소에 주어진 함수를 적용하고 결과로 새 RDD를 생성합니다. # RDD 생성 rdd = sc.parallelize([1, 2, 3, 4]) # 각 요소에 2를 곱함 result = rdd.map(lambda x: x*2) result.collect() # 결과: [2, 4, 6, 8] 2. filter filter 함수는 주어진 조건 함수에 따라 요소를 필터링합니다. 조건에 맞는 요소만 포함하는 새 RDD를 반환합니다. # RDD 생성 rdd = sc.parallelize([1, 2, 3, 4, 5]) # 짝수만 필터링 result = rdd.filter(lambda x: x % 2 == 0) result.collect() # 결과..

Tools/Spark 2024.03.13