定義によると:
RDDは不変のオブジェクトの分散コレクションです
それが何を意味するのかよくわかりません。ハードディスクに保存されたデータ(パーティション化されたオブジェクト)のようですか?もしそうなら、RDDがユーザー定義クラス(Javaなど、scalaまたはpython)
このリンクから: https://www.safaribooksonline.com/library/view/learning-spark/9781449359034/ch03.html それは言及しています:
ユーザーは2つの方法でRDDを作成します。外部データセットを読み込むか、ドライバープログラムでオブジェクトのコレクション(リストやセットなど)を配布する方法です。
RDDの一般的な理解とspark and hadoop。
誰か助けてください。
RDDは、基本的に、複数のマシンに分散したデータのセットのSpark表現であり、それに作用するAPIを使用します。RDDは、テキストファイルなどの任意のデータソースから取得できます。 JDBCなどを介したデータベース.
正式な定義は次のとおりです。
RDDはフォールトトレラントな並列データ構造であり、ユーザーが中間結果をメモリに明示的に保持し、パーティションを制御してデータ配置を最適化し、豊富な演算子セットを使用して操作できるようにします。
RDDとは何かについて詳しく知りたい場合は、コアのいずれかを読んでくださいSpark=学術論文、 Resilient Distributed Datasets:A Fault-Tolerant Abstraction for In-Memory Cluster Computing)
[〜#〜] rdd [〜#〜]は、dataset
の論理参照であり、集まる。 [〜#〜] rdd [〜#〜]sは不変であり、障害が発生した場合に自己回復します。
dataset
は、ユーザーが外部からロードしたデータです。 jsonファイル、csvファイル、または特定のデータ構造を持たないテキストファイルです。
[〜#〜] update [〜#〜]: ここ はRDDの内部を説明する論文です:
お役に立てれば。
正式には、RDDは読み取り専用のパーティション化されたレコードのコレクションです。 RDDは、(1)安定したストレージ内のデータまたは(2)他のRDDのいずれかの決定論的操作によってのみ作成できます。
RDDには次のプロパティがあります–
不変性とパーティション分割:パーティション分割されたレコードのコレクションで構成されるRDD。パーティションはRDDの並列性の基本単位であり、各パーティションはデータの1つの論理的な分割であり、不変であり、既存のパーティションのいくつかの変換によって作成されます。
ユーザーは、必要に応じて複数のデータセットを結合するキーに基づいて、独自のパーティション分割基準を定義できます。
粗視化操作:粗視化操作は、データセット内のすべての要素に適用される操作です。たとえば、RDDのパーティション内のすべての要素に対して実行されるマップ、フィルター、またはgroupBy操作。
フォールトトレランス: RDDは一連の変換に対して作成されるため、実際のデータではなく、これらの変換をログに記録します。これらの変換のグラフは、1つのRDDを生成するために系統グラフと呼ばれます。
例えば -
firstRDD=sc.textFile("hdfs://...")
secondRDD=firstRDD.filter(someFunction);
thirdRDD = secondRDD.map(someFunction);
result = thirdRDD.count()
RDDの一部のパーティションが失われた場合、複数のノード間でデータレプリケーションを行うのではなく、同じ計算を達成するために、そのパーティションで変換をリプレイで再生できます。データ管理とレプリケーションで、より高速な計算を実現します。
遅延評価: Sparkはアクションで初めて使用されたときにRDDを遅延計算し、変換をパイプライン処理できるようにします。したがって、上記の例ではRDDのみが評価されますcount()アクションが呼び出されたとき。
永続性:ユーザーは再利用するRDDを指定し、それらのストレージ戦略を選択できます(たとえば、メモリ内ストレージまたはディスクなど)。
RDDのこれらのプロパティにより、高速計算に役立ちます。
Resilient Distributed Dataset(RDD)は、方法Sparkはデータを表します。データはさまざまなソースから取得できます。
Sparkに関連するRDD
Sparkは単にRDDの実装です。
Hadoopに関連するRDD
Hadoopの威力は、ユーザーが作業の分散とフォールトトレランスを心配することなく、並列計算を記述できるという事実にあります。ただし、Hadoopは中間結果を再利用するアプリケーションには非効率的です。たとえば、PageRank、K-meansクラスタリング、ロジスティック回帰などの反復機械学習アルゴリズムは、中間結果を再利用します。
RDDでは、中間結果をRAMに保存できます。 Hadoopは、ディスクI/Oとシリアル化を生成する外部の安定したストレージシステムに書き込む必要があります。 RDDの場合、Sparkは反復アプリケーションのHadoopよりも最大20倍高速です。
RDDに適用される変換は粗粒度です。つまり、RDDの操作は、個々の要素ではなく、データセット全体に適用されます。したがって、map、filter、group、reduceなどの操作は許可されますが、set(i)やget(i)などの操作は許可されません。
粗視化の逆は細粒化です。きめ細かいストレージシステムはデータベースになります。
RDDはフォールトトレラントです。これは、コンポーネントの1つに障害が発生しても、システムが正常に動作し続けることができるプロパティです。
Sparkのフォールトトレランスは、そのきめの粗い性質に強くリンクしています。きめの細かいストレージシステムにフォールトトレランスを実装する唯一の方法は、マシン間でデータまたはログの更新を複製することです。ただし、Sparkのような粗粒度システムでは、変換のみがログに記録されますRDDのパーティションが失われた場合、RDDには十分な情報があり、すぐに再計算できます。
RDDはパーティションに「分散」(分離)されます。各パーティションは、マシンのメモリまたはディスクに存在できます。 Spark=パーティションでタスクを起動したい場合、彼はそのタスクをパーティションを含むマシンに送信します。これは「ローカル認識スケジューリング」として知られています。
出典:Spark:: http://spark.Apache.org/research.html に関する素晴らしい研究論文
ユアン・リースが提案した論文を含めてください。
RDD =復元力のある分散データセット
弾力性のある(辞書の意味)=(物質または物体の)曲げ、引き伸ばし、または圧縮された後、反動または跳ね返ることができる
RDDは次のように定義されます(LearningSpark-OREILLYから):RDDを常に再計算する機能は、実際にはRDDが「回復力のある」と呼ばれる理由です。RDDデータを保持するマシンが失敗すると、Spark欠落しているパーティションをユーザーに対して透過的に再計算します。
これは、「データ」が常に利用可能であることを意味します。また、SparkはHadoopなしで実行できるため、データは複製されません。Hadoop2.0の最も優れた特性の1つは、パッシブスタンバイネームノードの助けを借りた「高可用性」です。 SparkのRDD。
特定のRDD(データ)は、Sparkクラスター(Hadoopベースのクラスターのように)のさまざまなノードにまたがることができます。
ノードがクラッシュした場合、SparkはRDDを再計算し、他のノードにデータをロードできます。データは常に利用可能です。Spark 弾力性のある分散データセット(RDD)。これは、並列操作可能な要素のフォールトトレラントコレクションです( http: //spark.Apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds )
RDDをscalaコレクションと比較するには、以下のような違いがあります
[〜#〜] rdd [〜#〜]([〜#〜] r [〜#〜] esilient[〜#〜] d [〜#〜]distributed[ 〜#〜] d [〜#〜]atasets)は、データを表すための抽象化です。正式には、便利なAPIを提供する読み取り専用のパーティション化されたレコードのコレクションです。
RDDは、いくつかの重要な問題に対処することにより、MapReduceなどのクラスターコンピューティングフレームワークで大規模なデータセットを処理するための高性能ソリューションを提供します。
RDDには2つの主な制限があります。
RDDの概念上の利点の1つは、データとコードをまとめてパックし、データパイプラインを再利用しやすくすることです。
ソース: 復元性のある分散データセット:インメモリクラスターコンピューティングのフォールトトレラントな抽象化 、 大規模クラスターでの高速で一般的なデータ処理のアーキテクチャ
RDDは、データをSparkで表現する方法です。データのソースは、JSON、CSVテキストファイル、またはその他のソースです。 RDDはフォールトトレラントです。つまり、複数の場所にデータを格納する(つまり、データが分散形式で格納される)ため、ノードで障害が発生してもデータを回復できます。 RDDでは、データは常に利用可能です。ただし、RDDは遅く、コーディングが難しいため、時代遅れです。 DataFrameおよびDatasetの概念に置き換えられました。