반응형

분류 전체보기 103

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

object, class, case class, trait 의 상속과 인스턴스

Scala는 객체지향 프로그래밍과 함수형 프로그래밍을 모두 지원하는 프로그래밍 언어입니다. Scala에서는 object, class, case class, trait 같은 여러 키워드를 사용해 다양한 타입의 데이터 구조와 행동을 정의할 수 있습니다. Java와 비교하면서 각각에 대해 설명하고 예제를 들어 보겠습니다. 1. Class Scala의 class는 Java의 class와 매우 비슷합니다. 클래스는 객체의 청사진을 제공하며, 데이터와 그 데이터를 조작하는 메소드를 포함할 수 있습니다. Scala 예제: class Person(var name: String, var age: Int) { def greet(): Unit = { println(s"Hello, my name is $name and I a..

JAVA 바이트 코드 조작

출처 : https://www.inflearn.com/course/the-java-code-manipulation 바이트 코드 조작의 사용예시 (코드 커버리지) 코드 커버리지는 테스트 코드가 소스 코드의 어느 부분을 실행(확인)했는지를 백분율로 나타낸 것입니다. JaCoCo는 Java 코드 커버리지를 측정하는 도구 중 하나입니다. JaCoCo 사용하기 JaCoCo 설정: Maven 프로젝트의 pom.xml에 JaCoCo 플러그인을 추가합니다. JaCoCo 사용법. https://www.eclemma.org/jacoco/trunk/doc/index.html http://www.semdesigns.com/Company/Publications/TestCoverage.pdf pom.xml에 플러그인 추가 org..

개략적인 시스템 규모 추정

데이터의 크기 추정 2의 제곱수와 데이터의 크기 - 보통 1바이트가 1개의 문자 문자열의 크기와 종류 문자열은 문자의 연속된 시퀀스로, 텍스트 데이터를 표현하는 데 사용됩니다. 문자열을 저장하는 방법은 사용하는 문자 인코딩에 따라 달라집니다. ASCII (American Standard Code for Information Interchange) ASCII는 7비트 인코딩 시스템으로, 128개의 가능한 문자를 정의합니다 (0-127). 이는 기본적인 영문자, 숫자, 일부 특수문자를 포함합니다. 각 ASCII 문자는 1바이트 (8비트)를 사용하지만 실제로는 7비트만 사용합니다. ISO-8859-1 (Latin-1) ISO-8859-1은 ASCII를 확장한 8비트 인코딩으로, 추가적인 128개의 문자를 포함..

C.S/System Design 2024.04.16

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 ..

반응형