일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apache storm
- 도메인주도설계
- Spring Batch
- Gradle
- DDD
- Hbase
- SBT
- Angular2
- nginx
- hadoop
- Linux
- Clean Code
- 엘라스틱서치
- Spring XD
- docker
- 스프링 배치
- elasticsearch
- spark
- Java
- elastic search
- Spring
- hdfs
- 인텔리J
- Spring Boot
- scala
- 제주
- intellij
- Storm
- hibernate
- design pattern
- Today
- Total
목록전체 글 (310)
욱'S 노트
Overview 스파크 어플리케이션의 드라이버 프로그램들로 구성된다. 여기서 드라이버 프로그램이란 클러스터상에서 병렬 연산으로 수행되는 사용자 메인 함수를 의미한다.그리고 스파크는 두가지 주요한 추상화를 제공하는데, RDD(Resillent Distributed DataSet)과 공유 변수(Shared variable)이다. RDD는 파티션된 클러스터에 병렬 연산으로 수행될 수 있는 켈렉션이다. RDD는 일반적인 스칼라 컬렉션으로부터 만들어질 수 있고, HDFS와 같은 외부 시스템으로부터 만들어질 수도 있다. RDD는 노드 장애에 대해서 자동으로 복구된다. 스파크 타스크는 기본적으로 클러스터상에서 병렬 수행된다. 이에 변수들은 공유될 필요가 있다. 스파크는 두가지 타입의 공유 변수를 제공한다. 첫번째는 ..
일단 무작정 스파크를 시작해보자. 목표는 빌드환경 구성을 위해서 sbt를 사용할 것이며 텍스트에디터에 개발을 수행할 수 없으니 IntelliJ로 세팅을 하겠다. 1. 인텔리J에서 프로젝트 구성File -> New -> Project 순으로 메뉴를 선택하면 아래와 같은 화면이 나타난다.당연히 프로젝트는 Scala에 SBT를 선택한다. 2. 프로젝트가 구성되면 build.sbt 파일에 다음과 같이 입력한다.name := "spark-test" version := "1.0" scalaVersion := "2.11.7" libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"아직 sbt를 모르지만 간략하게 설명하면 name은 프로젝트 명을 의미하고..
스칼라는 빌트인 패턴 매칭 메커니즘을 제공한다. 다음 예제는 정수 값에 대한 매치를 수행한 결과이다.def getNumberString(number : Int) : String = number match { case 1 => "one" case 2 => "two" case _ => "many" } println(getNumberString(1)) println(getNumberString(2)) println(getNumberString(3))case문들이 있는 블럭에서 정수값을 문자열로 매핑하는 함수를 정의하고 있다. match 키워드는 객체에 대한 함수를 제공하는 편리한 방법이다.다음은 다양한 타입의 패턴에 대응하는 방법이다.def parseNumber(number : Any) : Any = numb..
스칼라는 케이스 클래스 문법을 지원한다. 케이스클래스는 다음과 같은 일반적인 클래스이다.기본적으로 불변이다.패턴 매칭에 따라 분리될 수 있다.레퍼런스 대신 구조적 동일성에 의해 비교된다.간결하게 초기화 되고 사용될 수 있다.예제를 살펴보자. Notification 추상 클래스가 슈퍼클래스와 각 구현 클래스 Email, SMS, VoiceRecording이다.abstract class Notification case class Email(sourceEmail : String, title : String, body : String) extends Notification case class SMS(sourceNumber : String, message : String) extends Notification c..
메소드에는 여러개의 파라미터를 정의할 수 있다. 메소드를 호출할때 더 작은 수의 파라미터가 들어오면 메소드는 전달된 수를 기본값으로 하고 그것보다 적은 수의 파라미터를 가진 함수로 표현될 수 있다.object CurryingTest extends App { def modN(n : Int)(x : Int) = x % n def multiply(f : Int => Int, x : Int, y : Int) = f(x) + y println(multiply(modN(2), 10, 4)) }위의 예제를 보자 modN은 두개의 파라미터가 정의된 것 같지만 multiply에서 사용시 한개의 파라미터만 전달되었다. 이 경우 n인자를 디폴트로 전달받은 함수로 인지되어 modN(2)는 multyply의 Int => Int..