집 >데이터 베이스 >MySQL 튜토리얼 >분할된 데이터에 대해 Spark RDD를 사용하여 SQL의 row_number() 기능을 복제하는 방법은 무엇입니까?
분할된 데이터의 SQL Row_Number에 해당하는 Spark RDD
SQL에서 row_number()는 분할된 데이터 세트 내의 행에 대한 순차 번호를 생성합니다. 이 기능은 Spark RDD에서 직접 사용할 수 없습니다. 그러나 유사한 기능을 달성하기 위한 해결 방법이 있습니다.
RDD 분할
파티션은 그룹 내에서 행 번호를 생성하는 데 중요합니다. 귀하의 경우 정렬하기 전에 RDD를 key_value(K)로 분할해야 합니다. 업데이트된 코드를 고려하세요.
val temp2 = temp1 .map(x => (x._1, (x._2, x._3, x._4))) .sortBy(a => (a._1, -a._2._2, -a._2._3)) .zipWithIndex .map(a => (a._1._1, a._1._2._1, a._1._2._2, a._1._2._3, a._2 + 1))
(a._1, -a._2._2, -a._2._3)에 sortBy를 적용하면 key_value를 기준으로 정렬한 다음 col2를 내림차순으로 정렬합니다. 마지막으로 SQL row_number() 동작을 모방하여 col3을 내림차순으로 내립니다.
행 추가 숫자
분할 및 정렬 후 zipWithIndex를 사용하여 행 번호를 추가할 수 있습니다:
val rowNums = temp2.map(a => (a._1, a._2, a._3, a._4, a._5)).cache()
참고: 응답에 제공되는 DataFrame 구현은 DataFrame용 솔루션이지만 RDD용 솔루션은 아닙니다.
위 내용은 분할된 데이터에 대해 Spark RDD를 사용하여 SQL의 row_number() 기능을 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!