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つの一般的な問題
>>: ハイブリッド クラウドとパブリック クラウド: クラウド コンピューティングの最終形態はどちらでしょうか?
クラウドコンピューティングの発展の歴史は、仮想化技術の発展の歴史でもあります。過去 20 年間、クラ...
長年にわたる情報構築を経て、中国のデジタル政府業務は新たな段階に入った。国務院弁公庁が昨年発表した「...
今日は、ウェブサイトの起動速度がウェブサイト全体の動作に与える影響を詳しく分析します。ぜひ私とコミュ...
[[350704]]著者は、正確にスケジュールされたタスクと遅延キュー処理機能を備えた、高同時実行シ...
みなさんこんにちは。私は warsion です。SEO と SEO とオンライン マーケティング プ...
さて、いわゆるハイエンド SEO テクニックについて話すとき、ウェブマスターは常にサイト グループや...
最適化が適切かどうかをどのように判断しますか?最適化が適切に行われているかどうかをどのように判断しま...
A5ウェブマスターネットワーク(www.admin5.com)は6月4日、CNBCによると、物議を醸...
アニメ ウェブサイトの増加に伴い、ますます多くのウェブマスターがコミック ウェブサイトに注目するよう...
多くの伝統産業では、過剰生産能力や産業衰退は珍しいことではありません。多くの産業の発展は独自のボトル...
justhost から良いニュースが届きました: (1) すべての VPS は、トラフィック制限なし...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン技術革新とアプリケーションにおける革新的...
ご存知のとおり、Baiduアルゴリズムの継続的なアップグレードにより、ウェブサイトの最適化は、外部リ...
[51CTO.comよりオリジナル記事] 12月30日、Huawei Cloud TechWave ...
2001年設立のインモーションホスティング傘下の仮想ホスティングブランド、Webhostinghub...