일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
- lazy evaluation
- 프로그래머스 큰 수 만들기
- 하둡에코시스템
- ORACLE MSSQL차이
- kafka 설치
- Spark
- AWS Crawler
- 데이터베이스복사
- freenom
- 프로그래머스힙
- 런타임데이터영역
- 빌드도구
- Catalyst Optimizer
- 하둡
- 지연연산
- 데이터파이프라인
- 문맥교환
- 데이터 수집
- 하둡1.0
- 데이터엔지니어링
- 카프카
- 실행엔진
- Databricks
- Spark 최적화
- 하둡2.0
- 프로그래머스
- ORACLE문법
- 서버간 복사
- 스파크
- EMR 구조
- Today
- Total
목록DataEngineering (31)
띵유로그
scala repl에서 caseclass 를 정의하려고 하니 다음과 같은 에러가 난다. case class XXXX(변수명1: String, 변수명2: String, is_regex: String) java.lang.NoSuchMethodError: scala.reflect.internal.Definitions$definitions$.classExistentialType(Lscala/reflect/internal/Symbols$Symbol;)Lscala/reflect/internal/Types$Type; at scala.tools.nsc.typechecker.SyntheticMethods$$anonfun$canEqualMethod$1$1.apply(SyntheticMethods.scala:147) at ..
RDD print 할때는 collect 한 후 foreach를 통해서 print 해야함 val test = ~~~ test.collect().foreach(println)
앞선 글에서 SPARK의 lazy evaluation과 in-memory등의 특성을 설명했다. 그렇다면 이러한 특성은 왜 유용할까? 어디에 유용할 까? 수많은 machine learning 알고리즘이 있지만, 대부분의 알고리즘은 iteration 에 기반한다. 여러 데이터를 가지고 반복작업을 하면서 최적화시키는 과정을 거친다. 여기서 SPARK 가 유용한 이유를 설명할 수 있다. 위 그림을 살펴보면 하둡은 각 작업이 끝난 후 disk에 저장하는 작업을 반복한다. 반면 SPARK 는 각 작업 후 결과를 memory 에 저장후 다시 활용한다. 즉, iteration이 많은 data science 에서는 매번 disk에 접근하는 하둡보다 spark가 훨씬 효율적인 것이다. SPARK에서 메모리에 저장해두고 바..
변수 = var 상수 = val object LearnScala { def main(args: Array[String]): Unit = { var x = 1 + 2 x = 3 * 4 println( x ) val y = 1 + 2 //y = 3 * 4 // ERR 상수값 변경 불가 println( y ) // 한 번에 여러개의 변수를 선언하면서 값을 대입할 수도 있습니다. var a, b, c = 5 println( a ) println( b ) println( c ) } } 결과 : 12 3 5 5 5 print 할 때 $변수 를 출력하면 바로 출력 가능($수식 또한 가능함) object LearnScala { def main(args: Array[String]): Unit = { var x = 10 ..
스칼라 Hello world 출력하기 object LearnScala { def main(args: Array[String]): Unit = { println("Hello, world!") } } 스칼라에서 1, 2, 3 과같은 원시타입은 객체로 취급된다. + , - 과같은 연산자도 1,2,3 과같은 원시타입 객체의 함수다. 그러므로 (1).+(2) 와 같은 연산도 가능하다. (+함수의 인자로 2 가 전달됨) 이때! + - * / 에서 연산의 우선순위가 존재하니, 스칼라에서는 연산자에도 우선순위가 존재하는 셈이다. object LearnScala { def main(args: Array[String]): Unit = { println( 1 + 2*3 ) println( (1).+(2)*(3) ) } } ..
스칼라에서 암시적 변환을 하는 것 처럼 스파크에서도 암시적 변환이 일어난다. RDD가 Double 객체만 포함한다면 org.apache.spark.rdd.DoubleRDDFunctions 클래스의 객체로 자동변환되어 double RDD 함수를 추가로 제공한다. 1. 기초 통계량 계산 이전에 만든 Int array로 아래와 같이 계산한다. scala > intIds.mean Double = 44.785714285714285 scala > intIds.sum Double = 627.0 Int 객체가 Double객체로 자동변환되어 double RDD함수가 암시적으로 적용됨. stats 행동연산자도 있는데 한번의 호출로 전체개수, 합계 평균, 최댓값, 최솟값, 분산, 표준편차를 계산한다. variance와 st..
1. sample 연산자 호출된 RDD에서 무작위로 요소를 뽑아 새로운 RDD를 만드는 변환 연산자. withReplacement 인자를 false로 지정하면 메서드 호출이 끝날 때까지 다음 샘플링대상에서 제외한다. 즉, 복원(replace)하기 않고 제거됨. (복원 샘플링과 비복원 샘플링) 두번째 인자인 fraction은 각 요소가 샘플링될 횟수의 기댓값이다. 비복원 샘플링에서는 각 요소가 샘플링기대확률을 나타냄 이전 게시글에서 주문 고객 ID리스트를 만들었으니 그 예제를 다시 사용해본다. scala > val s = uniqueIds.sample(false, 0.3) scala > s.count 의 결과가 2일수도,1일수도, 3일 수도 있다. 왜냐하면 앞서 언급했듯이 fraction 값은 각 요소가 ..
Transformation 과 Action RDD연산자는 크게 transformation(변환) 과 action(행동)으로 나뉜다. Transformation Acition 정의 RDD를 return RDD를 통해 계산 수행 (return type 은 연산마다 다름) 특징 Lazy eager 예시 filter, map, flatMap, distinct count, foreach, collect, reduce, take [예시] list를 만든 후에 이전 글에서 설명했던 parallelize함수를 통해 RDD를 만들었다. (spark2.0부터는 sparksession을 통해 호출해야한다. 따라서 spark.sparkcontext.parallelize 를 호출하면됨) 그 이후 글자별로 map을 해주었다. 하..