Apache Kylin高基数次元処理およびその他の最適化

1819 ワード

kylinのクエリーの場合、クエリーの次元が同じ集約グループにある場合、kylinはHBAseに直接行って予想される値を取得します.たとえば、クエリーの次元が同じ次元グループにない場合、kylinはbuildプロセスの計算に似たリアルタイム計算を行い、monitor上でslow queryを使用してリアルタイム計算が必要なsqlを記録します.slow queryに基づいて次元グループの最適化を行うことができます.
1つ目の質問:Tableauに表示されるメトリック値がSUM計算の場合、Hiveで最もよく使用されるフィールドタイプは、intおよびbigintの使用を避けるためにdecimal(20,0)です.
2つ目の問題:高基数次元のCubeは構築中にGC limite exceededとjavaを間違えた.lang.OutOfMemoryError: Java heap space
解決策:${KYLIN_HOME}/conf/kylin_job_conf.xmlに構成項目を追加するには、次のようにします.

        mapreduce.map.java.opts.max.heap
       983
    
    
        mapreduce.reduce.java.opts.max.heap
        983
    
    
        mapreduce.map.java.opts
        -Xmx8000m -XX:OnOutOfMemoryError='kill -9 %p'
        
    
    
        mapreduce.reduce.java.opts
        -Xmx8000m -XX:OnOutOfMemoryError='kill -9 %p'
        
    
    
        mapred.child.java.opt
        -Xmx8000m -XX:OnOutOfMemoryError='kill -9 %p'
        
    


第3の問題は、高基数次元グループ最適化:cubeのacvanced settingで最適化方法1>ハイテク次元は単独で次元グループを作ることができ、mandatory dimensionsに設定することができる.例えば、dが高基数次元であり、aが日付次元である次元a b c dがある.いずれの場合もクエリーが高速になるために、2つのAggregation Groupを作成することができ、第1のグループa b cは1グループであり、aは必要次元である.第2のグループa b c dは1つのグループであり、a dは必要次元である.2>rowkeys設定では、できるだけハイテク次元の位置を前にし、shard byをtrueに設定します(データの傾きを効果的に回避できます).
4つ目の質問、count distinct最適化について:Advanced ColumnFamilyでcount distinct列を1つのColumnFamilyに単独で入れる
5つ目の質問:フィールドを次元とメトリックの両方にするには、まず次元に設定し、メトリックを追加するときにAlso Show Dimensionsをチェックします.