2017-09-02 13 views
2

Google Dataflowプラットフォームでデータセットを直接キャッシュできるかどうかは不思議でした(SparkのRDDのキャッシュなど)。Dataflowでデータセットをキャッシュする

このような機能がない場合、データフローはアプリケーションでホットデータセットをどのように選択しますか?特にホットデータセットが複数ある場合、データセットの重要性に基づいてキャッシングの優先順位を設定する必要がありますか?

答えて

2

Dataflowには、Sparkとは非常に異なる実行モデルがあります。 Sparkでは、中心概念はRDDであり、RDDを使用する典型的なモードは、対話的に予期しない方法でクエリを実行することです。したがって、RDDはキャッシングを必要とし、潜在的にユーザによって制御可能である。

データフロー(Apache Beam)では、中心概念はPipelineです。PCollection(RDDに最も近い)はパイプライン内の論理ノードに過ぎず、モノリシックな全体として構築され、最適化されて実行されます。

これらのアプローチには利点がありますが、Dataflowのアプローチでは、PCollectionがパイプラインでどのように使用されるかを正確に把握しているため、予期しないことはなく、キャッシング戦略は必要ありません。

現在、fusionを使用して、可能な限りメタデータ化を回避しようとすると、DataflowはGoogle Cloud Storageの一時ファイルに中間PCollectionを具体化しています。 PCollectionがマテリアライズされている場合、このコレクションを処理するパイプラインステージはCloud Storageから読み込む必要があります。それ以外の場合(ステージがデータセットを生成するステージと融合している場合)、データセットを生成したワーカ上に同じ場所に配置された、生成されるとすぐに、メモリ内のデータセットの要素を処理します。

GroupByKeyなどがあります。データフローには、バッチパイプラインとストリーミングパイプラインで異なるGroupByKeyの実装がいくつかあります。 VM上のローカルディスクを使用してデータを格納するか、high-performance Google internal infrastructureを使用します。

+0

お返事ありがとうございます。これは、「予測不可能なことはありません...」という巨大な主張です。これにより、プラットフォームはリアルタイムシステムに適しています。どの研究論文(FlumeやMillwheelなど)で予測可能性についての情報を見つけることができるかどうか教えてください。主な問題は、大きなメモリを持つインスタンスタイプを選択することを除いて、チューニングパートを制御できないことです。入力データセットに基づいてコストモデルを作成するにはどうすればよいですか?唯一の実験的な?データフローモデルが最適化され、費用効果が高いことを顧客に納得させるにはどうすればよいですか?ありがとう。 – AmirCS

+1

ええと、クエリの実行前にSQLデータベースがクエリプラン全体を知っているのと同じように、コレクションのアクセスパターンは予測可能です。データのサイズや分布、ユーザーコードの処理時間など、まだ予測できないものがたくさんあります。「どのようなビームでもほとんどのチューニングノブを公開しないのは良い質問ですが、コメントの範囲外です。 :) – jkff

関連する問題