SIngletone 싱글톤


class BoardDao {
     private static BoardDao self = new BoardDao();

     private BoardDao() {
     }

     public static BoardDao getInstance() { // 싱글톤을 이용하여 외부에서 호출하도록 만듬
           return self ;
     }

>>> 인스턴스를 하나만 생성해서 계속 사용하므로 메모리를 효율적으로 사용 가능


Spark Stream이란 ?

Real-time processing / Stream processing

- IOT 세상이 다가오면서 데이터의 크기도 중요하지만 속도도 부각

- 대량의 데이터를 빠르게 처리하기 위한 기술들이 실시간 처리 / 스트림 터리

- 실시간 처리는 데이터 처리의 목표 또는 제약 사항 방식 (마감 시각이 있다.)

- 스트림 처리는 데이터 처리 방식 (끊임없이 흘러가는 데이터에 대한 처리 방식)


Basic Concept
Spark Streaming

- 초 단위로 데이터 처리

- 마이크로 배치의 연속으로 구현 (DStream)

- kafkam Twitter, File System, TCP Socket 등등에서 데이터 수집

- RDD에 제공되는 Operation과 시간 기반의 Operation (예를 들면 sliding window)를 제공


Discretized System

- DStream이란 시간 흐름에 따른 순차적 데이터를 의미

- RDD 개념을 갖고 있는 Spark와 유사하게 Spark Streaming은 DStream 또는 Discretized Streams라고 불리는 추상 개념을 가지고 있다.




실습 예)

from pyspark import SparkContext

from pyspark.streaming import StreamingContext


# StreamingContext 두개의 워킹 쓰레드와 5초 간격으로 정보 배치를 가지게 초기화

sc = SparkContext("local[2]", "NetworkWordCount")  # spark://10.0.0.25:7077 로 클러스터도 연결 가능

ssc = StreamingContext(sc, 5)


# localhost:9999에 연결하는 정보로 DStream 생성

lines = ssc.socketTextStream("localhost", 9999)


# 매 라인을 단어로 스플릿

words = lines.flatMap(lambda line: line.split(" "))


# 배치 단위로 워드 카운트

pairs = words.map(lambda word: (word, 1))

wordCounts = pairs.reduceByKey(lambda x, y: x + y)


# 워드카운트 한 내용을 콘솔에 출력

wordCounts.print()


ssc.start()          # 계산 실행

ssc.awaitTermination()  # 계산이 에러나 명령에 의해 강제로 종료될 때까지 기다림



natcat 실행

(Network connection 에서 raw-data read, write를 할수 있는 유틸리티 프로그램)

nc -lk 9999


소스코드 실행

./spark/bin/spark-submit test.py localhost 9999



- StreamingContext가 시작되면 다른 StreamingContext는 실행되거나 추가될 수 없음

- StreamingContext가 종료되면 재시작 불가능

- 하나의 JVM에 하나의 StreamingContext만 가능



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

Spark SQL이란 ?  (0) 2016.05.12
Spark - RDD란 !!? (2)  (0) 2016.05.09
Spark - RDD란 !!?  (0) 2016.05.09
Spark - 클러스터 설정/ 구축  (1) 2016.05.09
Spark 설치 방법 (우분투 ubuntu 환경)  (0) 2016.05.09

SPARK SQL이란 ?

: 구조화/반구조화 된 데이터를 처리하는 것     

sql에 대한 기본 지원을 제공, 외부 소스 모두에 저장된 데이터 조회가 간소화 됨, RDDs와 관계형 테이블의 경계가 사라짐.

- Import relational data from Parquet files and Hive tables

- Run SQL queries over imported data and existing RDDs

- Easily write RDDs out to Hive tables or Parquet files


다양한 interface 지원

> SQL, HiveSQL queries & DataFrame API (java, python, scala R) & DataSet API(scala, java)

다양한 Input source를 지원

>RDD & 임시테이블

 JSON 데이터 셋

 Parquet file

 HIve Table

 ODBC/JDBC 서버와의 연동


DataFrame이란 ?

: columns 들로 조직된 분산된 데이터 모음 ( 관계형 데이터베이스와 같은 개념) - 데이터 프레임이란 관계형 데이터 베이스의 테이블과 R, python의 데이터 프레임과 같은 개념이다. (데이터 프레임은 2차원 배열 구조로 구성되어 있다.)

DF can be constructed from structured data files, tables in Hive, external databases, or existing RDDs

python에서 DF를 만드는 방법    
 

  • Ability to scale from kilobytes of data on a single laptop to petabytes on a large cluster

  • Support for a wide array of data formats and storage systems

  • State-of-the-art optimization and code generation through the Spark SQL Catalystoptimizer

  • APIs for Python, Java, Scala, and R (in development via SparkR)


외부 데이터 소스를 읽어오면 데이터 프레임 형태로 읽음 (예제)

Running SQL Queries Programmatically



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

Spark STREAM??  (0) 2016.05.12
Spark - RDD란 !!? (2)  (0) 2016.05.09
Spark - RDD란 !!?  (0) 2016.05.09
Spark - 클러스터 설정/ 구축  (1) 2016.05.09
Spark 설치 방법 (우분투 ubuntu 환경)  (0) 2016.05.09

+ Recent posts