2017-03-08 1 views
1

난 RDD, 각 행의 인덱스 값과 LongDouble 포함 여기서 스파크 스칼라의 다른 RDD의 각 요소에 RDD의 각 요소를 추가하십시오.

org.apache.spark.rdd.RDD[(Long, Double)] 

구조는 다음의 두 RDDs있다. 스파크 스칼라의 다른 RDD의 각 요소에 RDD의 각 요소를 추가하고 싶습니다.

예는 다음과 같을 것이다 :

RDD1 :

Array[(Long, Double)] = Array((0,-3),(1,2)) 

RDD2 :

Array[(Long, Double)] = Array((0,4),(1,-2)) 

결과 :

Array[(Long, Double)] = Array((0,1),(0,-5),(1,6),(1,0)) 

답변

1

을 계산하는 동안지도 첫 번째 튜플의 유지 ((key, value), (key, value)) 쌍 결과 :하지만 cartesian()를 사용하여주의

val result = rdd1.cartesian(rdd2).map(x => (x._1._1, x._2._2 + x._1._2)) 
// Result 
result.collect() 
Array[(Int, Int)] = Array((0,1), (0,-5), (1,6), (1,0)) 

를, 메모리 소비 극적으로 귀하의 rdd의 큰를 증가합니다.

0

, 이것을 시도하십시오 :

val df1 = Seq((0,-3),(1,2)).toDF("col1", "col2") 
val df2 = Seq((0,4),(1,-2)).toDF("col1", "col2") 

df1.createOrReplaceTempView("temp1") 
df2.createOrReplaceTempView("temp2") 

spark.sql("SELECT t1.col1 + t2.col1, t1.col2 + t2.col2 FROM t1, t2").show 
0

두 RDDs를 압축 한 후 당신이 정말 여기서 뭐하는 것은 당신이 단순히 값을 각각의 합계 당신이 rdd 's의 직교 제품이다 합

관련 문제