저는 (id, day, val, order)의 4 가지 값을 가진 스파크 스칼라 DataFrame을 가지고 있습니다. (id, day, value_list : List (val1, val2, ..., valn)) 여기서 val1, valn은 오름차순으로 정렬됩니다. 예를 들어스파크 스칼라 : DataFrame 열 값을 정렬 된 목록으로 집계
:
(50, 113, 1, 1),
(50, 113, 1, 3),
(50, 113, 2, 2),
(51, 114, 1, 2),
(51, 114, 2, 1),
(51, 113, 1, 1)
이 될 것입니다 :
((51,113),List(1))
((51,114),List(2, 1)
((50,113),List(1, 2, 1))
나는 가까운,하지만 난이 목록에 데이터를 집계 한 후 어떻게해야할지 모르겠어요. 출력과 같은
import org.apache.spark.sql.Row
val testList = List((50, 113, 1, 1), (50, 113, 1, 3), (50, 113, 2, 2), (51, 114, 1, 2), (51, 114, 2, 1), (51, 113, 1, 1))
val testDF = sqlContext.sparkContext.parallelize(testList).toDF("id1", "id2", "val", "order")
val rDD1 = testDF.map{case Row(key1: Int, key2: Int, val1: Int, val2: Int) => ((key1, key2), List((val1, val2)))}
val rDD2 = rDD1.reduceByKey{case (x, y) => x ++ y}
:
((51,113),List((1,1)))
((51,114),List((1,2), (2,1)))
((50,113),List((1,3), (1,1), (2,2)))
다음 단계는 생산하는 것입니다 :
그때 주문 INT하여 각 값 목록 점화 순서가하는 방법을 모르겠어요((51,113),List((1,1)))
((51,114),List((2,1), (1,2)))
((50,113),List((1,1), (2,2), (1,3)))