2017-01-25 10 views
1

私はHiveを初めて使い、実行に時間がかかるクエリを最適化しようとしています。私は、SELECT文とWHERE文でregexp_extractとget_jsonを同じ呼び出しをしていますが、これを最適化する方法があるかどうかと疑問に思っていました。バックグラウンドで)。Hiveで複数の同じ演算子と関数の呼び出しを最適化しますか?

例クエリ:

SELECT 
    regexp_extract(get_json(json, 'url'), '.*[&?]q=([^&]*)') as query 
FROM 
    api_request_logs 
WHERE 
    LENGTH(regexp_extract(get_json(json, 'url'), '.*[&?]q=([^&]*)')) > 0 

ありがとう!

+0

uはRegexSerdeを使用することを検討していました走るとは思いませんか?私はそれが助けることができると信じて - 例えば、あなたの望む正規表現と '選択として挿入'テーブルを作成する。 http://stackoverflow.com/questions/9102184/regex-for-access-log-in-hive-serdeを参照してください。 – belostoky

答えて

0

あなたは一度だけ正規表現を指定するには、派生テーブルを使用することができますが、私はそれがより速く

select * from (
    select regexp_extract(get_json(json, 'url'), '.*[&?]q=([^&]*)') as query 
    from api_request_logs 
) t where length(query) > 0 
関連する問題