2

私は2つのテーブルを持っています。

tableOneが含まれています

ユーザー ID ゲーム ID 開始タイムスタンプ 終了タイムスタンプ

tableTwo が含まれています

userid actiontimestamp someaction

ユーザー ID とゲーム ID を指定して、各ゲーム ID に含まれるアクションの数を確認したいと思います。等結合のみが許可されている場合、それらを結合する効率的な方法は何ですか?

クロスジョインとフィルターの試みのほとんどは、マッパーとリデューサーが 100% でスタックしてしまいました。

4

2 に答える 2

1

WHERE句ですべての「シータ結合」(非等結合)条件を処理できます。このような:

SELECT * FROM OrderLineItem li LEFT OUTER JOIN ProductPrice p ON p.ProductID = li.ProductID
WHERE (p.StartDate IS NULL AND p.EndDate IS NULL)
OR li.OrderDate BETWEEN p.StartDate AND p.EndDate;

もちろん、この例では、StartDate と EndDate が両方とも ProductPrice の null 非許容列であると想定しています。

于 2014-12-09T02:32:41.747 に答える
0

非等価結合は Hive では使用できません。

等結合を最適化するには、次のことを試すことができます。

1.Hiveにバケットを実装できます。

2.こちらのFacebook記事 もお読みください。

3. 複数のジョブがありますか? ある場合は、ハイブでの並列実行を有効にします。ジョブが独立している場合、それらは並行して実行されます。

4. テーブルの 1 つが小さい場合は、ハイブでファイルの追加オプションを使用して分散キャッシュを使用します。

于 2013-07-05T06:25:03.433 に答える