728x90
반응형

빅데이터/스파크 8

스파크 튜토리얼 - (8) 스파크 스트리밍

Spark Streaming 스트리밍이랑 실시간으로 끊임없이 들어오는 데이터를 의미합니다. Spark Streaming이란 이렇게 실시간으로 들어오는 데이터를 처리하기 위한 모듈입니다. 이러한 스트리밍 데이터는 개발자가 지정한 단위의 시간동안 들어온 데이터를, 묶음으로 Batch 처리를 하게 됩니다. 아래의 그림을 보면 이해가 빠를 것입니다. 이렇게 들어오는 데이터 소스는, Apache Kafka, Kinesis와 같은 메시지 서버일 가능성이 높습니다. 하지만 Kafka나 Kinesis를 실습하기에는 너무 길어지기에, 파이썬 웹소켓을 통해 스트리밍 데이터를 보내보도록 하겠습니다. Spark Streaming Context 생성 Spark Streaming은 pyspark.streaming패키지에서 불러올..

스파크 튜토리얼 - (7) 스파크 SQL

Spark SQL 스파크는 여러 방면에서 SQL을 사용할 수 있도록 지원합니다. 이전 포스팅들에서는 csv나 json파일을 통해 DataFrame을 만드는 방법을 잠깐 설명했습니다. 이 DataFrame 기능이 곧 Spark SQL에 포함되는 기능입니다. Spark SQL과 DataFrame SQLContext는 spark session을 내장하고 있습니다. 아래와 같이 입력하게 되면 sqlCtx가 내장하고 있는 SparkSession을 가지고 올 수 있습니다. In [ ]: sqlCtx.sparkSession 이 내용이 중요한 것은, SparkSession이 파일 로딩 및 JDBC나 여러 Connector를 사용한 SQL서버와의 연결이 가능하기 떄문입니다. 따라서 JDBC나 ODBC를 지원하는 모든 S..

스파크 튜토리얼 - (6) 데이터프레임

DataFrame DataFrame은 테이블처럼 구조화된 데이터로, 스키마를 표현할 수 있는 RDD의 확장 구조체입니다. python의 pandas나 SQL을 써본사람이라면, 이해가 빠를것입니다. Row DataFrame의 행을 Row라고 합니다.. Row들이 곧 하나의 레코드가 되고, Row들이 RDD를 내장함으로서, 효과적으로 데이터를 접근할 수 있게 해줍니다. 데이터 지난번 포스팅에서 사용했던 json데이터를 사용하겠습니다. 다운로드 링크는 아래에 있습니다. DataFrame 생성 데이터프레임은 크게 두가지 방법으로 생성할 수 있습니다. 스파크 세션을 통해 직접 생성 SQL컨텍스트의 테이블을 통해 생성 두가지 방법 모두 스파크 내부에서의 동작은 크게 다르지 않습니다. 각각의 방법을 살펴보도록 하겠습..

스파크 튜토리얼 - (5) 파일 로딩

파이썬 파일 로딩 Python은 여러 구조화된 파일을 로딩하는데 좋은 라이브러리들을 제공합니다. 이번 포스팅에서는 Python에서 json과 csv파일을 로딩하고, 그것들을 RDD에 로딩하는 방법을 알아보겠습니다. 예제에 사용할 파일 에제에서는 두개의 파일을 사용할 것입니다. json파일과 csv파일을 다운받아 사용하시기 바랍니다. json json파일은 구조화된 파일로, 주로 웹에서 데이터를 주고받을 때 쓰입니다. 파이썬에서 이 파일 포맷을 로딩할 때는 json패키지를 사용합니다. 다음은 rdd에서 텍스트 파일 형식으로 읽어온 뒤, 각 line의 json을 로딩하는 예제입니다. In [5]: import json inputJson = sc.textFile("./data/cars.json")\ .map(..

스파크 튜토리얼 - (4) 페어 RDD

페어 RDD 페어 RDD란 key-value쌍으로 이루어진 RDD를 말합니다. 파이썬 에서는 Tuple로 이뤄진 RDD가 곧 페어 RDD가 됩니다. 페어 RDD 생성 먼저 간단하게 parallelize메소드를 사용해 int key-value페어로 이뤄진 페어RDD를 생성하겠습니다. In [46]: examplePairRDD = sc.parallelize([(1, 3), (1, 5), (2, 4), (3, 3), (4, 8), (4, 2), (3, 1)]) examplePairRDD Out[46]: ParallelCollectionRDD[77] at parallelize at PythonRDD.scala:194 페어 RDD 트랜스포메이션 페어 RDD는 기본 RDD에서 사용 가능한 메소드들은 모두 사용할 수..

스파크 튜토리얼 - (3) RDD

RDD RDD는 Resilient Distributed Dataset의 약자입니다. 직역하면 탄력 분산 데이터셋이 되겠습니다. 이는 분산되어 존재하는 데이터들의 모임, 즉 클러스터에 분배되어 있는 데이터들을 하나로 관리하는 개념이라고 생각하면 편할 것 같습니다. 스파크의 모든 데이터 타입들은 RDD를 기반으로 만들어져 있고, 데이터끼리의 연산들은 RDD의 연산으로 이루어져 있습니다. RDD는 HDFS의 파일과 같이 변경이 불가능한, 즉 쓰기가 불가능한 데이터입니다. RDD 연산 RDD는 두가지 연산으로 이루어져 있습니다. Transformation Action Transformation 트랜스포메이션은 RDD끼리의 연산입니다. 이전 포스팅에서 사용했던 filter메소드 역시 트랜스포메이션의 일종입니다. ..

스파크 튜토리얼 - (2) 주피터 노트북 설정

주피터 노트북 주피터 노트북은 파이썬을 개발할 때 가장 많이 쓰이는 에디터중 하나일 것입니다. 예전에는 IPython이라고 하는 이름으로 출시가 되었었죠. Python커널을 사용해 짧은 코드를 돌리고 결과를 그 화면에서 바로 볼 수 있고, 마크다운을 사용해 노트나 보고서 형식으로 작성할 수 있어서, 프로토타이핑이나 보고서 형식의 코드 작성에 유용합니다. 주피터 노트북 설정 저는 VirtualBox를 사용하였기 때문에, 외부 접속이 필요해서 다음 설정을 해주었습니다. 먼저 다음 커맨드를 실행해 config파일을 생성해 줍니다. # jupyter notebook --generate-config 그리고 해당 파일을 열어줍니다. # vi ./.jupyter/jupyter_notebook_config.py 아래 ..

스파크 튜토리얼 - (1) 스파크 로컬모드 설치

스파크 아파치 스파크는 하둡 맵리듀스의 단점을 보완하고자 개발된 플랫폼 입니다. 메모리 베이스로 데이터를 처리하기 때문에 파일기반인 하둡보다 빠르고, DAG를 이용한 데이터의 흐름을 먼저 계산하기 때문에 복잡한 계산을 할 때 역시 하둡의 맵리듀스보다 빠른 경우가 많습니다. 환경설정 저는 VirtualBox에 linux OS (CentOS 7)를 별도로 깔아 사용하였습니다. 또한 Python역시 기존 OS에 설치되어있는 3.6버전을 사용하였습니다. 자바 설치 스파크는 JVM기반인 Scala로 만들어져 있습니다. 따라서 스파크에서 무언가를 하려면 Java가 설치되어있어야 합니다. 자바는 다음 링크에서 다운받아 설치해주시면 됩니다. (링크는 java 8버전 입니다.) https://www.oracle.com/..

728x90
반응형