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

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

Mary-Kate Olsen
リリース: 2024-12-31 13:00:12
オリジナル
782 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート