분류 전체보기 88

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

RxJS 파이프라인 연산자

pipe RxJS의 pipe 함수는 여러 개의 연산자를 함께 사용하여 복잡한 데이터 흐름을 쉽게 관리할 수 있도록 도와줍니다. pipe 함수는 Observable에 메서드 체인으로 연산자를 적용하고, 최종적으로 새로운 Observable을 반환합니다. 이 방법을 통해, 입력 Observable로부터 출력 Observable까지 데이터가 어떻게 변형되고 처리되는지 명확하게 볼 수 있습니다. import { interval } from 'rxjs'; import { filter, map, take } from 'rxjs/operators'; const observable = interval(1000).pipe( filter(value => value % 2 === 0), // 짝수만 통과 map(value ..

RxJS 설명과 Observable 예제

RxJS RxJS는 특히 비동기 이벤트를 처리할 때 강력하며, 복잡한 데이터 스트림을 다루어야 하는 상황에서 꼭 필요하다고 할 수 있습니다. 이러한 상황은 주로 실시간 데이터 처리, 사용자 입력 처리, HTTP 요청 처리 등에 해당됩니다. RxJS를 사용하면 이벤트 스트림을 쉽게 생성, 변환, 조합 및 구독할 수 있으며, 이는 복잡한 비동기 코드를 보다 선언적이고 관리하기 쉬운 형태로 만들어줍니다. 예제: 실시간 검색어 기능 구현 다음은 사용자가 입력 필드에 텍스트를 입력할 때마다 검색어를 실시간으로 서버에 쿼리하고 결과를 받아 표시하는 기능을 구현한 예제입니다. 이 예제는 사용자 입력 처리와 HTTP 요청을 동시에 다루는 방법을 보여줍니다. RxJS를 사용하면 이런 유형의 상호작용을 효과적으로 구현할 ..

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

타입스크립트 스프레드 연산자, 나머지 매개변수(...), 언더스코어(_)

TypeScript에서 .., ..., _ 같은 기호들은 각각 다른 용도로 사용됩니다. 여기서 ..는 TypeScript 문법에 직접적으로 해당하는 기호가 아니지만, ... (스프레드 연산자 또는 나머지 매개변수)와 _ (일반적으로 무시되는 변수 또는 속성을 나타내는 데 사용)는 TypeScript 및 JavaScript에서 중요한 역할을 합니다. ... (스프레드 연산자 또는 나머지 매개변수) 스프레드 연산자 (Spread Operator): 배열이나 객체의 모든 요소를 개별 요소로 확장하거나, 함수 호출 시 인자 리스트로 전개하는 데 사용됩니다. 배열 또는 객체 리터럴 내부에서 사용할 수 있습니다. let numbers = [1, 2, 3]; let moreNumbers = [...numbers, 4..

Spark 파니셔닝

Spark 파티셔닝 Apache Spark에서 RDD(Resilient Distributed Dataset) 파티셔닝은 데이터를 분산 처리하기 위해 데이터셋을 물리적으로 분할하는 방식입니다. 파티셔닝은 Spark의 병렬 처리와 직접적으로 관련이 있으며, 데이터를 여러 노드에 분산시켜 처리 속도와 효율성을 높입니다. RDD 파티셔닝의 주요 목적은 네트워크 통신 비용을 최소화하면서 데이터 처리 작업을 최적화하는 것입니다. spark 파티셔닝의 종류 - 해시 파티셔닝 (Hash Partitioning): 이 방법은 키를 기준으로 데이터를 파티션에 할당합니다. 각 키는 해시 함수를 통해 파티션 번호에 매핑되며, 이는 키가 동일한 데이터가 같은 파티션에 위치하도록 보장합니다. 이 방식은 키 기반의 집계나 조인 작..

카테고리 없음 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