ホームページ >データベース >mysql チュートリアル >パーティション化されたデータの Spark RDD を使用して SQL の row_number() 機能をレプリケートする方法

パーティション化されたデータの Spark RDD を使用して SQL の row_number() 機能をレプリケートする方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-31 13:00:12795ブラウズ

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 のパーティション化

グループ内の行番号を生成するには、パーティション化が重要です。あなたの場合、並べ替える前に key_value (K) で RDD を分割する必要があります。更新されたコードを考えてみましょう:

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))

sortBy を (a._1, -a._2._2, -a._2._3) に適用すると、key_value に基づいて並べ替えられ、次に、col2 の降順になります。最後に、SQL の row_number() 動作を模倣して、col3 を降順します。

行の追加Numbers

パーティション化して並べ替えた後、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。