집 >데이터 베이스 >MySQL 튜토리얼 >Spark RDD에서 SQL의 `ROW_NUMBER()` 함수를 시뮬레이션하는 방법은 무엇입니까?
Spark RDD와 동일한 SQL 행 번호
Spark에서 SQL의 row_number()와 동일한 행 번호를 얻습니다(partition by .. . order by ...) RDD의 경우 Spark 1.4의 향상된 기능을 사용하여 달성할 수 있습니다. 기능.
해결책:
val sample_data = Seq(((3, 4), 5, 5, 5), ((3, 4), 5, 5, 9), ((3, 4), 7, 5, 5), ((1, 2), 1, 2, 3), ((1, 2), 1, 4, 7), ((1, 2), 2, 2, 3)) val temp1 = sc.parallelize(sample_data)
Spark 1.4에 도입된 rowNumber() 함수를 활용하여 분할된 창을 만듭니다.
import org.apache.spark.sql.expressions.Window val partitionedRdd = temp1 .map(x => (x._1, x._2._1, x._2._2, x._2._3)) .groupBy(_._1) .mapGroups((_, entries) => entries.toList .sortBy(x => (x._2, -x._3, x._4)) .zipWithIndex .map(x => (x._1._1, x._1._2, x._1._3, x._1._4, x._2 + 1)) )
partitionedRdd.foreach(println) // Example output: // ((1,2),1,4,7,1) // ((1,2),1,2,3,2) // ((1,2),2,2,3,3) // ((3,4),5,5,5,4) // ((3,4),5,5,9,5) // ((3,4),7,5,5,6)
위 내용은 Spark RDD에서 SQL의 `ROW_NUMBER()` 함수를 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!