kylinの実現原理

1836 ワード

より抜くhttps://blog.bcmeng.com/post/kylin-cube.html#kylin%E7%9A%84%E9%A2%84%E8%AE%A1%E7%AE%97%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84
  • kylin推定実装プロセス:hiveデータソースのデータを作成した計算ロジックに基づいて指定した次元を指標として計算し、可能なすべての計算結果(cube)をHBAseに格納します.(すべてですか?)
  • cubeとcuboid、cubeはデータソースのすべての計算結果であり、cuboidは各次元の組み合わせであり、計算の指標を含む.cubeの計算過程は階層ごとに計算され、まずBase cuboidを計算し、その後、次元数を計算して順次減少し、各層のcuboidを階層ごとに下に計算する.
  • cuboidをHBAseのrowkeyストレージに変換し、
  • cuboidの次元はHBAseのrowkeyにマッピングされ、次元はkylinによって辞書符号化されてストレージリソースを節約し、その指標はHBAseのvalueにマッピングされます.
  • cuboidの計算中にHiveテーブルのデータがHBAseのKV形式に変換されます.Rowkeyの具体的なフォーマットはcuboid id + (最新のRowkeyでは同時クエリのためにShardKeyも加わっていますが、最新ですか)、cuboidは8ビット
  • です
  • すべてのcuboid計算が完了すると、cuboidはHBAseのKeyValue形式に変換されてHBAseのHFileが生成され、最後にHFile loadがcube対応のHBAseテーブルに格納されます.

  • SQLクエリHBAseのクエリ操作への変換方法
  •   
    1 select year, sum(price)
    2 from table
    3 where city = "beijing"
    4 group by year

    このSQLは、次元yearおよびcityに関しているので、対応するcuboidは0000011であり、cityの値が確定したbeijingであるため、Scan HBAseのときにScan Rowkeyが0000001で始まり、cityの値がbeijingの行であり、対応する指標sum(price)の値を取り、ユーザに返す.