RDD 入門 RDD (Resilient Distributed Dataset) は分散データセットと呼ばれます。これは Spark における最も基本的なデータ抽象化です。これは、要素を並列に計算できる不変でパーティション化可能なコレクションを表します。 RDDはクラスです RDD の特性 1. 各パーティションにアクセスするための優先場所を保存するリスト。 HDFS ファイルの場合、このリストには各パーティションが配置されているブロックの場所が格納されます。 「データの移動はコンピューティングの移動ほど良くない」という概念に従って、Spark はタスクをスケジュールするときに、処理するデータ ブロックの保存場所にコンピューティング タスクを割り当てるように最善を尽くします。 2. 各パーティションを計算する関数が保存されます。この計算方法は各データ ブロックに適用されます。 Spark での RDD の計算はシャードに基づいており、各 RDD はこの目標を達成するためにコンピューティング関数を実装します。計算関数は反復子を複合し、各計算の結果を保存する必要はありません。 3. RDD 間の依存関係。 RDD の各変換によって新しい RDD が生成されるため、RDD 間にパイプラインのような依存関係が形成されます。一部のパーティション データが失われた場合、Spark は RDD のすべてのパーティションを再計算する代わりに、この依存関係を通じて失われたパーティション データを再計算できます。 4. RDD パーティショニング関数 (Partitioner)。1 つはハッシュベースの HashPartitioner、もう 1 つは範囲ベースの RangePartitioner です。キー値 RDD の場合のみ、Partitioner が存在します。非キー値 RDD の場合、Partitioner の値は None です。 Partitioner 関数は、RDD 自体のシャード数を決定するだけでなく、親 RDD がシャッフルされるときのシャード数も決定します。 5. データ セットの基本コンポーネントであるパーティションのグループ。 RDD の場合、各シャードはコンピューティング タスクによって処理され、並列コンピューティングの粒度を決定します。ユーザーは、RDD を作成するときに、RDD のシャードの数を指定できます。指定しない場合はデフォルト値が使用されます。デフォルト値は、プログラムに割り当てられた CPU コアの数です。 RDDの作成方法 1. コレクションをシリアル化してRDDを作成する(parallelize、makeRDD) 2. 外部データソース(testFile)を読み取る 3. 変換操作を通じて他のRDDを行RDDに変換する RDD の 2 つの演算子: 1. 変革
2.アクション
RDDの依存関係 1. 狭い依存関係 狭い依存関係とは、各親 RDD のパーティションが最大 1 つの子 RDD のパーティションによって使用されることを意味します。 要約: 一人っ子のイメージメタファーへの狭い依存 2. 幅広い依存関係 広い依存関係とは、複数の子RDDパーティションが同じ親RDDパーティションに依存することを意味します。 要約: 超越のイメージメタファーへの狭い依存 3. 血統 RDD は、粗粒度の変換、つまり多数のレコードに対して実行される単一の操作のみをサポートします。失われたパーティションの回復を容易にするために、RDD を作成する一連の Lineage (系統) が記録されます。 RDD の系統は、RDD のメタデータ情報と変換動作を記録します。 RDD の一部のパーティション データが失われた場合、この情報に基づいて失われたデータ パーティションを再計算して復元できます。 DAG生成 DAG (Directed Acyclic Graph) は有向非巡回グラフと呼ばれます。元の RDD は、一連の変換を通じて DAG を形成します。 DAG は、RDD 間のさまざまな依存関係に応じて、さまざまなステージに分割されます。依存関係が狭い場合、パーティション変換プロセスはステージ内で完了します。幅広い依存関係の場合、シャッフルの存在により、親 RDD が処理された後にのみ次の計算を開始できます。したがって、幅広い依存関係がステージを分割するための基礎となります。 RDD キャッシュ Spark が非常に高速である理由の 1 つは、異なる操作間でデータセットをメモリ内に保持またはキャッシュできることです。 RDD を永続化した後、各ノードは計算されたシャード結果をメモリに保存し、この RDD または派生 RDD の他のアクションで再利用します。これにより、後続のアクションが大幅に高速化されます。 RDD 関連の永続性とキャッシュは、Spark の最も重要な機能の 1 つです。キャッシュは、Spark が反復アルゴリズムと高速なインタラクティブ クエリを構築するための鍵であると言えます。 依存関係を見つけてステージを分割する目的の 1 つは、キャッシュを分割することです。ステージを分けてキャッシュを設定するには? (1) 狭い依存関係でキャッシュを設定したい場合にキャッシュを使用する (2)広範囲の依存関係にキャッシュを設定したい場合にはチェックポイントを使用する キャッシュとチェックポイントを設定するにはどうすればいいですか? キャッシュ: someRDD.cache() はキャッシュを正常に追加し、メモリに格納します。 someRDD.persist(StorageLevel.MEMORY_AND_DISK): 必要に応じてキャッシュの場所(メモリとハードディスク)を設定します チェックポイント: RDDで計算されたデータをローカルディスクまたはHDFSに保存できます sc.setCheckpointDIr("hdfs://hadoop1:9000/checkpoint") は、ワイド依存関係の前にチェックポイントパスを設定します。 someRDD.checkpoint() はチェックポイントを設定します キャッシュとチェックポイントの違い キャッシュはデータをキャッシュするだけで、RDD の依存関係は変更しません。チェックポイントは新しい RDD を生成し、後続の RDD は新しい RDD に依存するため、依存関係が変更されます。データ復旧の順序: チェックポイント---》キャッシュ--》再計算 |
<<: クラウドインスタンスの最適化を妨げる5つの一般的な問題
>>: ハイブリッド クラウドとパブリック クラウド: クラウド コンピューティングの最終形態はどちらでしょうか?
ヒートマップが統計ツールに追加されて以来、ほぼ毎日見ています。ヒートマップはユーザーのニーズを調査し...
私たちの生活の中で、ビジネスを行うという場合、通常は商品を販売するために店を開くことを意味します。実...
Cloudcone は昨日、エンタープライズ レベルのハードウェア、Xeon E5 (3.0GHz)...
Kubernetes 1.24 は、当初 4 月 19 日にリリースされる予定でしたが、5 月 3 ...
Baidu に関しては、ウェブマスターの友人たちは愛憎入り混じった感情を抱いています。百度に対する私...
ウェブマスターは、毎日 50、100 以上の外部リンクを投稿するために熱心に取り組んでいます。しかし...
今日、もっと効果的なマーケティングの方法があるかと聞かれたら、私は、ターゲットとなる消費者の心理に立...
WeChatマーケティングの今後の動向はますます明確になっているこれは20日にモーメントでのマーケテ...
検索エンジン最適化は、2008年と2009年に多くの企業に受け入れられて以来、新たな勢力として浮上し...
王小芬は、オンライン交渉の絵を描く:人々がお金を節約して利益を得るのを助ける商品市場を理解し、ソフト...
ウェブマスターや SEO 担当者がウェブサイトのコンテンツを書くとき、テキストにキーワード アンカー...
クラウド コンピューティング環境を管理する場合は、「ホット スタンバイ」や「パイロット ライト」など...
Warner Cloud(長年運営し、/ICPIDC/ISP/CDNなどの証明書を保持している国内の...
cyanode.com は、HugeServer Networks と提携している新しいブランドです...
Rap "indescribable" Node は、IDC 業界で 10 年以...