>데이터 베이스 >MySQL 튜토리얼 >분할된 데이터에 대해 Spark RDD를 사용하여 SQL의 row_number() 기능을 복제하는 방법은 무엇입니까?

분할된 데이터에 대해 Spark RDD를 사용하여 SQL의 row_number() 기능을 복제하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-31 13:00:12809검색

How to Replicate SQL's row_number() Functionality with Spark RDDs for Partitioned Data?

분할된 데이터의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.