2017-05-01 6 views
-1

誰かが以下の質問をスピードアップする方法をアドバイスできるかどうか疑問に思っていましたか?私のHadoop Hiveクエリのスピードアップ

ありがとうございました!

select 
CONCAT(REGEXP_EXTRACT(domain,'([^.:]+).[^.:]+:?[0-9]*$'), '.', REGEXP_EXTRACT(domain,'([^.:]+):?[0-9]*$')) as cleandomain, 
dt, hour, sum(optimisedsize) as bytes, sum(optimisedsize)/1024000 as mb, count(*) as hits 
from udsapp.web 
where dt = 20170428 
group by CONCAT(REGEXP_EXTRACT(domain,'([^.:]+).[^.:]+:?[0-9]*$'), '.', REGEXP_EXTRACT(domain,'([^.:]+).[^.:]+.[^.:]+:?[0-9]*$')), dt, hour, domain sort by bytes desc 
+0

実行時の計算を避けるために、regexp_extract部分が格納される別の列を作成します。 –

+0

目的の結果を含むテーブル定義とデータサンプルを追加します –

答えて

-1

それはあなたを助けていないので、あなたはとにかくドメインによってグループ化されている、でそう、あなたのグループでは、グループでのREGEXP_EXTRACT機能を取り出します。 DT、時間によって

グループ、ドメイン

あなたは、インデックスを変更し、そのまだ遅すぎる、とあなたの結果セットが超えていることができない場合は第二の最大の改善は、インデックスである可能性があり何千もの行私はregexp関数を取り除き、できるならば別の層でそれをすることをお勧めします

上記のすべてが存在し、まだ遅すぎるなら、私はより多くのスペックを必要としますが、ソリューションは侵襲的になるでしょう

関連する問題