샘플 데이터 세트의 다음 행의 키 필드로, 이전 행의 키를 복사합니다 :어떻게 키 - 값 쌍 RDD
$, Claw "OnCreativity" (2012) [Himself]
$, Homo Nykytaiteen museo (1986) [Himself] <25>
Suuri illusioni (1985) [Guests] <22>
$, Steve E.R. Sluts (2003) (V) <12>
$hort, Too 2012 AVN Awards Show (2012) (TV) [Himself - Musical Guest]
2012 AVN Red Carpet Show (2012) (TV) [Himself]
5th Annual VH1 Hip Hop Honors (2008) (TV) [Himself]
American Pimp (1999) [Too $hort]
나는를 사용하여 같은 키 - 값 쌍 RDD을 만들었습니다 다음 코드를
To split data: val actorTuple = actor.map(l => l.split("\t"))
To make KV pair: val actorKV = actorTuple.map(l => (l(0), l(l.length-1))).filter{case(x,y) => y != "" }
키 - 값 RDD 콘솔 출력 :
Array(($, Claw,"OnCreativity" (2012) [Himself]), ($, Homo,Nykytaiteen museo (1986) [Himself] <25>), ("",Suuri illusioni (1985) [Guests] <22>), ($, Steve,E.R. Sluts (2003) (V) <12>).......
그러나,이 ""키 즉, 빈 등 (을 참조 라인의 많은이 위의 RDD 출력), 데이터 집합의 특성 때문에 이전 행의 액터가 비어있는 경우이 행에 복사하는 기능이 필요합니다. 어떻게 수행 할 수 있습니다.
되어 최종 결과의 형식은 배우 이름의 일부로 바뀌므로 정상적인 논리에서는 사용할 수 없습니다. –
설명 된 논리는 교환 가능하지 않습니다. RDD 요소는 여러 컴퓨터로 분할됩니다. 이전 키 요소가 다른 컴퓨터에 있으면 어떻게 될까요? 또한 RDD 데이터 구조가 정렬되지 않는다고 생각합니다. 필자는 파일을 RDD 쌍으로 구문 분석하는 구문 분석 논리를 사용하는 것이 더 간단 할 것이라고 생각했습니다. 배우 이름의 키와 배우가 있던 모든 영화 목록의 값이 필요했습니다. 원하는 모든 논리 Spark RDD API에 적용하면 파일을 파싱하고 기본 RDD를 만들 때 적용 할 수있을 것입니다. – xyzzy
저는 파일을 RDD 쌍으로 구문 분석하는 파싱 로직을 갖고 싶습니다. 키는 액터 이름으로 사용하고 값은 액터가 들어있는 모든 동영상의 목록으로,하지만 데이터 세트를 파싱 할 때 아래 링크에서 다운로드), 우리는 쌍을 이루기 위해 라인을 필드로 분리해야하기 때문에 값 & 액터로 영화 목록을 키로 추출 할 수 없습니다. 또한 탭으로 구분 된 데이터 세트를 사용하고 .wholeTextFiles()를 사용하면 RDD에서 단 한 줄만 가져옵니다. 비어있는 경우 이전 줄의 키를 복사하는 사용자 정의 함수를 제안합니다. –