yunki Kim Blog

「Do What You Love」

OpenId Provier 구축 공부 - 2편 (OAuth 토큰 보안 취약점)

OpenId Provier 구축 공부 - 1편 (OAuth 2.0) 1. OAuth 토큰 보안 취약점 1.1 Bearer Token OAuth 2.0에서는 Bearer token을 보안 장치로 정의하고 있다. 이 토큰을 가진 사람이라면, 누구나 토큰을 사용하고 있다. 이런 결정은 OAuth 1.0 매커니즘에서 오는 여러 문제점들을 제거하기...

OpenId Provier 구축 공부 - 1편 (OAuth 2.0)

현재 회사에서 통합회원플랫폼에서 인증/인가 서버 구축을 담당하면서 기존에 간단한 개념만 알고 있었던 인증/인가와 관련된 지식들을 제대로 공부할 기회가 생겼다. 공부한 내용들을 정리해보고자 한다. 현재 구현하는 통합회원플랫폼은 회사 내부의 회원 뿐만 아니라 여러 자회사를 포함한 여러 회사의 서비스에 있는 회원들을 통합해 관리하는 플랫폼이다. 여러 사이...

6. 다양한 데이터 타입 다루기

스파크 구조적 연산에서 표현식을 만드는 방법을 알아보자. 1. API는 어디서 찾을까 데이터 변환용 함수는 다음과 같은 곳에서 찾을 수 있다. DataFrame 메서드 DataFrameStateFunctions, DataFrameNaFunctions 등 Dataset 하위 모듈이 다양한 메서드를 제공한다. DataFram...

5. 구조적 API 기본 연산

DataFrame은 Row 타입의 레코드와 각 레코드에 수행할 연산 표현식을 나타내는 여러 컬럼으로 구성된다. DataFrame에 관한 용어는 다음과 같은 의미를 가진다. 스키마: 각 컬럼 명과 데이터 타입을 정의한다. 파티셔닝: DataFrame, DataSet이 클러스터에서 물리적으로 배치되는 형태 파티셔닝 스키마: 파티션을 배치하는...

4. 구조적API 개요

구조적 API를 사용하면 비정형, 반정형, 정형 데이터를 모두 처리할 수 있다. 구조적 API에는 다음과 같은 세 가지 분산 컬렉션 API가 있다. Dataset DataFrame SQL 테이블과 뷰 구조적 API를 사용하면 배치 작업을 간단히 스트리밍 작업으로 변환할 수 있다. 스파크는 트랜스포메이션 처리 과정을 정의하는 분산 프...

3. 스파크 기능 둘러보기

스파크는 저수분 API, 구조적 API, 추가 기능을 제공하는 표준 라이브러리로 구성되어 있다. 1. 운영용 애플리케이션 실행하기 spark-submit 명령어를 사용하면 대화형 셸에서 개발한 프로그램을 운영용 애플리케이션으로 전환할 수 있다. spark-submit 명령은 코드를 클러스터에 전송하고 실행시키는 역할을 한다. 스파크 애플리케이션은...

2. 스파크 간단히 살펴보기

스파크는 클러스터에서 데이터 처리 작업을 관리하고 조율하는 프레임워크이다. 연산에 사용할 클러스터는 클러스터 매니저가 관리한다. 사용자는 스파크 애플리케이션을 클러스터 매니저에게 제출(submit)한다. 사용자가 제출하면 클러스터 매니저는 애플리케이션 실행에 필요한 자원을 할당해서 작업을 마무리한다. 클러스터 매니저 종류로는 spark standalo...

1. 아파치 스파크란

아파치 스파크는 빅데이터를 위한 통합 컴퓨팅 엔진이자 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합이다. 1 아파치 스파크의 철할 1.1 통합 스파크 핵심 목표는 ‘빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공’하는 것이다. 통합이라는 특성은 다음과 같은 점에서 잘 나타난다. 다양한 데이터 분석 작업을 같은 연산 엔...

카프카 메시지 키값 설정으로 DB 동시성 이슈 해결하기

본 글에 사용된 코드는 문제 상황을 설명하기 위한 예시이며, 실제로 사용된 코드가 아닙니다. 회사에서 작성한 코드를 테스트하던 도중, 로컬에서는 발생하지 않는 문제가 테스트 서버에서는 발생하는 이상한 상황을 만났다. 문제 상황 DB 테이블 DDL은 다음과 같다. DB는 Postgresql이다. 1 2 3 4 5 create table t...

아파치 스파크 RDD 문법 예제

예제 1: 기본 문법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import pyspark test_file = "file:///home/jovyan/work/sample/helloWorld.txt" # test_file 내용: # hello w...