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計算が完了すると、cuboidはHBAseの
SQLクエリHBAseのクエリ操作への変換方法
このSQLは、次元
cuboid id +
(最新のRowkeyでは同時クエリのためにShardKeyも加わっていますが、最新ですか)、cuboidは8ビットKeyValue
形式に変換されてHBAseのHFileが生成され、最後にHFile loadがcube対応の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)
の値を取り、ユーザに返す.