일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스복사
- 하둡2.0
- 데이터엔지니어링
- 데이터파이프라인
- Catalyst Optimizer
- 스파크
- 문맥교환
- 지연연산
- 데이터 수집
- 프로그래머스힙
- 프로그래머스 큰 수 만들기
- lazy evaluation
- 하둡1.0
- Spark
- 서버간 복사
- Databricks
- 빌드도구
- 카프카
- ORACLE문법
- Spark 최적화
- 실행엔진
- EMR 구조
- ORACLE MSSQL차이
- 하둡에코시스템
- 프로그래머스
- 하둡
- 런타임데이터영역
- kafka 설치
- freenom
- AWS Crawler
- Today
- Total
목록전체 글 (86)
띵유로그
스칼라 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) ) } } ..
문제 설명은 중요한게 아니니 안하겠다...ㅎ DFS로 풀다가 recursion error 가 떠서 기록해둔다. 파이썬에서는 1000번 이상의 recursion이 발생하면 recursion error 가 뜬다. 그럴땐 아래코드를 추가해서 해결하면된다. import sys sys.setrecursionlimit(100000) 이 문제에서는 O(n^3) 이기도하고 row, col이 각각 100 이면 최대 10000번의 재귀가 발생한다. 설정 된 recursionlimit 도 확인해보자. import sys print(sys.getrecursionlimit())
배열이 주어지고 배열의 일부 원소 합중 최대가 되는 조합을 찾는다. 이때 인접한 원소는 선택할 수 없다. max_arr배열에 해당 원소 까지의 최대가 되는 합을 계속해서 갱신해 나간다. 모든 원소가 음수일 때는 0을 return 해야하므로, 처음에는 0과 arr[0]중 최대값을 넣는다. index 1 까지의 최댓값 : arr[0]만 선택할 때 or arr[1]만 선택할 때 index 2 까지의 최댓값 : arr[2]만 선택할 때 or arr[1]만 선택할 때 or arr[0]만 선택할 때 or arr[0] + arr[2] ... index i 일때 max(max_arr[i-1],max(max_arr[i-2],max(arr[i], arr[i]+max_arr[i-2]))) ㄴ> max(본인선택하지 않고 이전..
문제 요약 : 기계마다 제품 한개를 만드는데 걸리는 시간이 다르다. 제품 한 개를 만드는데 걸리는 시간이 주어졌을 때 목표 생산량을 채우려면 최소 몇일이 소요 되는가? INPUT 기계 대수 / 목표생산량 각 기계별 제품 1개 생산소요 시간 접근법) 이 문제는 몇일이 걸릴지 시간을 찾는(SEARCH) 문제이다. 탐색을 위해서는 우선 탐색하고자 하는 값의 범위에 대한 정의가 필요하다. 최소시간 ~ 최대 시간 중 binary 탐색을 통해 조건을 만족하는 시간을 찾을 것이다. 최소시간 : 모든 기계의 생산량이 하루 생산량이 가장 적은 기계와 같다고 가정. -> 필요한 시간 = 목표생산량 * max(생산 소요 시간) //기계대수 최대시간 : 모든 기계의 생산량이 하루 생산량이 가장 많은 기계와 같다고 가정. ->..
첫번째 줄 : magazine 두번째 줄 : note print Yes if he can replicate his ransom note exactly using whole words from the magazine; otherwise, print No. def checkMagazine(magazine, note): dict_mag={} for word in magazine: if word not in dict_mag: dict_mag[word]=1 else: dict_mag[word]+=1 for word in note: if word not in dict_mag or dict_mag[word]==0: print("No") return ; if word in dict_mag : dict_mag[word]..
스칼라에서 암시적 변환을 하는 것 처럼 스파크에서도 암시적 변환이 일어난다. 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을 해주었다. 하..