반응형

Spark SQL 이란?

  • 구조화된 데이터와 잘 작동하며, 구조화된 데이터에 대한 분산 쿼리 및 데이터 처리를 제공하는 라이브러리입니다.
  • RDBMS 테이블, 구조화된 데이터의 파일 모팻에서 데이터를 읽어 그 데이터로 스파크에 영구적이거나 임시적인 테이블을 SQL 문을 사용하여 데이터에 쉽게 접근할 수 있도록 합니다.

 

반응형
반응형

Spark 특성 4가지

Spark 특성으로는 4가지가 있습니다. 속도, 사용 편의성, 모듈성, 그리고 확장성이 있습니다.

 

 

속도

  • Spark 는 질의 연산을 방향성 비순환 그래프(directed acyclic graph, Dag)로 구성합니다.
  • Dag 의 스케줄러와 질의 최적화 모듈은 효율적인 연산 그래프를 만들어서 각가의 태스크로 분해하여 클러스터의 워커 노드 위에서 병렬 수행될 수 있도록 해줍니다.
  • Spark 는 물리적 실행 엔진인 Tungsten(텅스텐) 의 전체적 코드 생성(whole-stage code generation) 이라는 방법을 사용하여 간결한 코드를 생성합니다.
  • Spak 는 디스크 I/O 를 제한적으로 사용하여 성능이 크게 향상시켰습니다.

*방향성 비순환 그래프(directed acyclic graph, Dag)

https://infoinhere.tistory.com/118

 

사용 편의성

  • RDD 를 제공하여 편한 언어로 빅데이터 애플리케이션을 만들 수 있도록 해줍니다.

 

모듈성

  • api 로 이루어진 통합 라이브러리를 제공합니다.
  • 컴포넌트로는 스파크 SQL, 스파크 정형화 스트리밍, 스파크 MLlib, GraphX 가 있습니다.

 

확장성

  • Spark 는 저장보다는 빠른 병렬 연산 엔진에 집중되어 있습니다. 저장과 연산을 모두 포함하는 Apache Hadoop 과 달리 저장과 연산을 분리했습니다.
  • Spark DataFrameReader 와 DataFrameWriter 는 kafka, Kinesis, Azure, AWS S3 등의 데이터 소스에서 데이터를 읽어와 논리적인 데이터 추상화 레벨에서 처리하도록 확장이 가능합니다.
  •  
반응형
반응형

방향성 비순환 그래프(directed acyclic graph, Dag)

방향성 비순환 그래프(DAG)는 각 요소가 특정 방향으로 향하고 있으며, 상호적으로 연결되어 순환하지 않는 구조를 가지는 그래프를 의미합니다.

 

특징

  • 방향성: 각 엣지는 방향을 가지고 있습니다.
  • 비순환성: 그래프 내에서 순환 또는 루프가 없습니다.

 

장점

  • 효율적인 데이터 처리: 순환이 없기 때문에, 데이터 처리와 알고리즘이 효율적으로 이루어집니다.
  • 의존성 관리: 작업 간의 의존성을 명확하게 정의하여 작업을 효과적으로 조정할 수 있습니다

 

단점

  • 복잡한 구현: 일부 문제에 대한 DAG의 구현은 복잡할 수 있습니다.
  • 일부 작업에서 효과적이지 않을 수 있음: 특정 유형의 문제에는 DAG가 효과적이지 않을 수 있습니다.

 

응용사례

  • 작업 스케줄링: 작업 간의 의존성을 관리하고 병렬로 실행 가능한 작업을 식별하는 데 사용됩니다.
  • 데이터 흐름 그래프: 머신 러닝 및 데이터 처리에서 데이터 흐름을 표현하는 데 사용됩니다.

 

효과적인 사용 방법

  • 의존성 분석: 작업 간의 의존성을 명확하게 이해하고 그에 따라 작업을 조직합니다.
  • 효율적인 병렬 처리: 병렬로 실행 가능한 작업을 식별하여 시스템 자원을 효과적으로 활용합니다.
반응형

'Data engineer > Apache Spark' 카테고리의 다른 글

[Spark]GraphX  (0) 2024.01.07
[Spark]Spark 정형화 스트리밍(Structured Streaming)  (1) 2024.01.07
[Spark]Spark MLlib(Machine Learning Library)  (0) 2024.01.07
[Spark]Spark SQL 이란?  (0) 2024.01.07
[Spark]Spark 특성 4가지  (1) 2024.01.07
반응형

sequence(자동 증가) 값 확인

환경

- DBeaver에서 query 실행.

 

 

PostgreSQL에서 setval() 함수를 통해서 현재 seq 값을 확인할 수 있다는 글이 많은데 ERROR가 발생했습니다.

last_value() 함수도 ERROR 발생합니다.

현재까지 성공한 seq 성공 방법은 nextval(’seq name’) 밖에 없습니다. 하지만 이 방법을 사용하면 seq 값이 1 증가하기 때문에 사용할 수 없습니다.

 

**DBeaver 을 사용하면 table 목록을 열면 Sequences 항목이 나오는데 sequences 를 확인 할 수 있습니다.**

 

성공

last_value 컬럼을 조회하면  sequence 값을 확인할 수 있었습니다.

select last_value from seq이름

 

 

반응형

'DB > PostgreSQL' 카테고리의 다른 글

PostgreSQL console 명령어  (0) 2024.09.09
반응형

Go memory 사용량 확인

var memStats runtime.MemStats
runtime.ReadMemStats(&memStats)
initialMemoryUsage := memStats.TotalAlloc

runtime.ReadMemStats(&memStats)
finalMemoryUsage := memStats.TotalAlloc
memoryUsed := finalMemoryUsage - initialMemoryUsage
fmt.Printf("총 메모리 사용량: %d bytes\n", memoryUsed)
반응형

'Golang > Let's Go' 카테고리의 다른 글

Go 1.21에서 추가된 slice 의 기능  (0) 2023.11.04
Go function? Go Method?  (0) 2023.10.12
BindJSON vs ShouldBindJSON  (0) 2023.10.12
Go 변수와 상수  (0) 2023.10.01
Go 에러로 인한 서버 다운 막는 방법  (0) 2023.08.28
반응형

Redis 명령어

Redis server 명령어

$ redis-server : Redis 실행합니다.
$ brew services start redis : brew 명령어를 통해 Redis를 백그라운드에서 실행할 수 있습니다.
$ brew services restart redis : Redis를 재실행합니다.
$ brew services stop redis : 실행중인 Redis를 중지합니다.
$ redis-cli ping : Redis가 실행되고 있는 상태인지 확인할 수 있습니다.

 

 

Redis-cli 명령어

$ keys * : 저장된 key 값 모두를 봅니다.
$ set key value : key 값과 value 값을 저장합니다.
$ mset key value : Multi key 값과 value 값을 저장합니다.
$ keys *key* : *을 사용하여 찾고자 하는 key 값의 일부 부분을 대신할 수 있습니다.
$ get key : 찾고자 하는 key의 value 값을 구합니다.
$ del key : 해당 key에 값을 삭제합니다.
$ flushall : 모든 정보를 삭제합니다.
$ rename key newkey : key name을 수정합니다.
$ setex key seconds value :  만료 시간을 지정하여 데이터를 저장합니다.
$ ttl key : ttl을 통해 만료 시간을 확인할 수 있습니다. -2 값은 데이터가 소멸한 데이터를 의미합니다. -1 같은 경우 기한이 없는 데이터를 의미합니다.
반응형

'DB Middleware > Redis' 카테고리의 다른 글

맥북에서 Redis 설치하기  (0) 2023.11.10
반응형

맥북에서 Redis 설치하기

 

맥북에서 Redis 설치하기

맥북에서는 brew 로 쉽게 설치할 수 있습니다.

$ brew update
$ brew install redis

#redis 설치된거 확인합니다.
$ redis-server --version

 

 

 

반응형

'DB Middleware > Redis' 카테고리의 다른 글

Redis 명령어  (0) 2023.11.10
반응형

Go 1.21에서 추가된 slice 의 기능

 

Contains

ex 슬라이스에 value 가 있는지 확인하고, 존재하면 true 를 반환한다.

//추가된 기능
ex := []string{"A", "B", "C"}
ok := slices.Contains(ex, "B")
fmt.Sprintf("%t", ok) // true

//이전 기능
func contains(slice []string, key string) bool {
	ex := make(map[string]struct{}, len(slice))
	for _, s := range slice {
    	ex[s] = struct{}{}
	}
	_, ok := m[key]
return ok
}

 

Insert

ex 슬라이스 내의 i 위치에 value 를 추가하고 반환한다.

//추가된 기능
ex := []string{"A", "B", "C"}
ex = slices.Insert(ex, len(ex), "D")
fmt.Sprintf("%v", ex) // [A B C D]

//이전 기능
ex := []string{"A", "B", "C"}
m = append(ex, "D")
fmt.Sprintf("%v", m) //[A B C D]

 

Delete

ex 슬라이스 내에 있는 요소를 i 에서 j 위치까지 삭제하고 반환한다.

 

//추가된 기능
//ex[A B C D]
ex = slices.Delete(ex, len(ex)-1, len(ex))
fmt.Sprintf("%v", ex) // [A B C]

//이전 기능
ex = append(ex[:len(ex)-1], ex[len(ex):]...)
fmt.Sprintf("%v", ex) // [A B C]

 

반응형

'Golang > Let's Go' 카테고리의 다른 글

Go memory 사용량 확인  (0) 2023.12.13
Go function? Go Method?  (0) 2023.10.12
BindJSON vs ShouldBindJSON  (0) 2023.10.12
Go 변수와 상수  (0) 2023.10.01
Go 에러로 인한 서버 다운 막는 방법  (0) 2023.08.28

+ Recent posts