0

過去 2 か月間 Hive について学習してきましたが、特定のシーケンス ベースのクエリを実行する方法を理解するのに苦労しています。次の例を見てください。

  • ユーザーアクションからなる巨大なログがあります
  • すべてのユーザー アクションには日付フィールドがありますが、異なるマシンからの複数のログ ファイルが原因で、明らかにその順序でスキャンされない場合があります。
  • 各ログは、さまざまな異なるイベントを記録できます。この例では、これらを文字で示します: A、B、C、D...

問題: 「平均して、B が発生する前にイベント A が発生する回数」を尋ねるクエリを作成するにはどうすればよいでしょうか?

ユーザーをグループ化して、A と B を実行したユーザーのみを取得し、発生した A の数を平均する方法は知っていますが、B の最初の発生で制限するのは難しいようです。見栄えの悪いクエリを 10 個ほど並べることで実際にこれを行うことができると思いますが、私が知らないより簡単な方法があるかどうかを知りたいと思っていました。

ありがとう!

4

1 に答える 1

2

これは、Hiveが等結合とは異なる結合をサポートしていないことを考慮すると、特にHiveではSQLにマッピングするのは簡単ではありません。
同時に、小さな部分を自分たちで行いながら、多くの重労働をハイブに任せることができます。
私が提案するアイデアは次のとおりです。特定のユーザーのすべてのイベントをグループ化するためにHiveを作成します。AとBの最小日付を計算し、出力0,1,2,3-を生成する独自のアグリゲーションUDFを作成できます-Aのみが発生した場合、Bのみが発生し、AはBの前に発生し、BはAの前に発生し
ます。計算の数は、Hiveで行うのは簡単です。

于 2013-01-26T07:10:00.937 に答える