-1

過去のデータ:

  1. GRP や CPP などの履歴情報を含むアクティビティごとに複数のテーブルがあります。
  2. アクティビティごとに GRP と CPP が定義されている複数のディメンションがあります。
    ディメンション - Geography、TimePeriod、Primary_Message
  3. 各アクティビティには、これらのディメンションのサブセットが含まれる場合があります

 Activity1 {Geography, TimePeriod, GRP, CPP}

 Activity2 {TimePeriod, GRP, CPP}

 Activity3 {Primary_Message, TimePeriod, GRP, CPP}

使用事例:

  1. すべての活動について、期間全体のデータを表示したい場合があります (このディメンションはすべての活動で使用できます)。

  2. 地理的にデータを表示したい場合があります (このディメンションはいくつかのアクティビティに存在します)。

すべてのユースケースが効率的に機能するように RDD を設計する必要があります。

どの時点でも、各ジョブは 1 つのアクティビティに対応します。

私には2つの選択肢があります -

  1. アクティビティごとに 1 つの RDD を作成し、そのテーブルのディメンション間で分割します。したがって、アクティビティと同じ数の RDD があります。
    ジョブごとに、特定の RDD にアクセスして計算します

  2. すべてのアクティビティに対して 1 つの RDD を作成し、いくつかのディメンションでそれを分割し
    ます。ジョブごとに、1 つの大きな RDD にアクセスし、アクティビティの RDD でフィルターを実行し、計算を行います。

私の質問は、ユースケースと仮定を考慮して、RDD を設計するのにどのオプションがより効率的かということです。

ティア!

4

1 に答える 1

0

単一の RDD の利点は、別のアクティビティ タイプ (アクティビティ 4) を追加する作業がほとんどないことです。個別の RDD の利点は、1 つのアクティビティ タイプにのみアクセスする場合に、他のタイプのデータを調べる必要がないことです。

あなたがコメントで言うように:

UI では、すべてのアクティビティのデータが表示されます。これを実現するために、複数のジョブ (アクティビティごとに 1 つのジョブ) を実行し、期間全体の値を計算します。

N 個のアクティビティ タイプと M 個の合計レコードがある場合、別個の RDD がある場合、M 個のレコードを処理して UI をレンダリングします。単一のRDDがある場合、N×Mレコードを通過します。

于 2014-12-09T09:16:51.690 に答える