SPARK [RDD 파 티 션]
hdfs 파일 에서 만 든 RDD 의 파 티 션 개 수 를 지정 할 수 있 습 니 다. 파 티 션 수 와 block 수가 일치 하면 로 컬 파일 에서 RDD 를 만 들 면 기본적으로 기계 의 cpu 개수 입 니 다.
//
>val rdd = sc.textFile("/home/reducer2/cluster/hadoop/readme.md")
>rdd.partitions.size
res0: INT = 8 // cpu
//
>val rdd = sc.textFile("/home/reducer2/cluster/hadoop/readme.md",6);
RDD 의 첫 번 째 위치 preferred Locations spark 는 작업 을 수행 할 때 가능 한 한 데이터 에서 가장 가 까 운 노드 에 연산 자 를 할당 하고 데이터 의 네트워크 IO 를 줄 입 니 다. RDD 가 생 성 된 위치 가 첫 번 째 위치 입 니 다. HDFS 가 생 성 한 RDD 라면 첫 번 째 위 치 는 block 이 있 는 노드 입 니 다.전환 을 거 친 RDD 라면 RDD 가 있 는 노드 에 연산 자 를 할당 해 야 한다.
큰 파일 40G 가 있 으 면 RDD 를 만 들 고 block 개수 와 같은 파 티 션 을 만 듭 니 다. 기본 블록 이 128 M 이면 320 개의 block (paritions) 이 생 깁 니 다. 모두 5 대의 natanode 가 평균 320 개의 block 을 분배 했다 면 데이터 node 마다 최소 64 개의 파 티 션 이 있 습 니 다.현재 파 티 션 1 을 계산 하려 면 첫 번 째 단 계 는 RDD 파 티 션 1 의 최 우선 위 치 를 알 아야 합 니 다.
val location = rdd.preferredLocations(rdd.dependecies(0))
res1:Set[String] =(192.168.110.1,192.168.110.2,192.168.110.3) // block
그러나 실제 개발 과정 에서 우 리 는 단일 구역 의 집행 상황 에 주목 하지 않 고 다음 과 같다.
val rdds = sc.textFile("/.../..");
varl count = rdds.filter(line=>line.contains("error"))
filter 를 실행 할 때 실제 적 으로 모든 파 티 션 에서 이 함 수 를 실행 하고 마지막 에 새로운 RDD 를 생 성 합 니 다. 새로운 RDD 의 파 티 션 상황 은 이전의 파 티 션 과 대체적으로 같 을 수 있 습 니 다. 같은 기계 노드 에서 기계 간 의 데이터 재 배열 을 줄 일 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.