2017-12-11 13 views
0

예를 들어, 우리는 두 개의 파일 인 a.txt와 b.txt 파일을 추가하려고한다. 함께. 어쩌면 내 경우는 추가가 아니며, 스파크의 여러 인수를 사용하여 함수를 처리하는 방법 만 테스트하려는 경우 인수의 데이터는 로컬 파일에서 생성 된 rdd에서 가져온 것입니다.여러 가지 인자로 함수를 다루는 방법, 인자의 데이터는 로컬 파일에서 생성 된 rdd에서 나온다.

우리는 코드로, 하나 개의 파일의 데이터에 번호를 추가 할 수 있습니다

a_data = sc.textFile("a.txt") 
a_data.map(lambda x: x + 5) 

어떻게 스파크 RDD와 함께 두 파일의 데이터를 추가?

+0

두 개의 RDD [Int]/RDD [Double] 값을 하나의 RDD에 함께 추가 하시겠습니까? – Shaido

+0

답장을 보내 주셔서 감사합니다. 어쩌면 내 설명이 명확하지 않을 수 있습니다. 문제의 설명을 수정합니다. –

답변

0

나는 당신이 원하는 것을 이해하지 못합니다. 당신은 RDD (b)의 해당 요소에 RDD (A)의 각 요소를 추가 할 경우 각 RDD의 각 요소에 대한 순서화 된 인덱스를 연결 것이다 zipWithIndex와 함께 할 수있는이 코드가하는

val a = sc.textFile("a.txt").zipWithIndex().map(_.swap) 
val b = sc.textFile("b.txt").zipWithIndex().map(_.swap) 
a.fullOuterJoin(b) 
.map{ case(k, (v_a, v_b)) => v_a.getOrElse(0) + v_b.getOrElse(0) } 

(the scaladoc 참조) 두 파일의 길이가 같다고 가정하지 않습니다 (그렇지 않은 경우 끝에 0이 추가됩니다). 길이가 같다고 가정하면 다음과 같이 간단하게 쓸 수 있습니다.

a.join(b).map(_._2).map(_+_)