Может ли hive создать временную таблицу, чтобы я мог получить небольшую таблицу для дальнейших запросов?

#hive #hiveql

#улей #hiveql

Вопрос:

У меня есть таблица, схема как показано ниже:

  struct TBL{
   1:optional string category;
   2:optional string endpoint; 
   3:optional string priority; 
   4:optional i64 timestap;
   5:optional string traceId;   
   6:optional string rpcId;     
   7:optional string businessId;
   8:optional string message;   
   9:optional int date;    
}
  

Меня волнует только 8:optional string message;
message поле is log .

У меня есть список URL-адресов, некоторые из которых можно найти в message поданном файле. Мне нужно найти, какие URL-адреса можно найти в таблице. В message поданном файле URL-адрес всегда содержит "getRequestURL" такие

 10.128.226.31,[INFO  2019-03-13 10:00:18.770] [resin-port-9300-44] [aaaLiMKyYK9bNbetoyhLw_-301570423] com.example.cashpay.filter.StaticFilter.doFilter(StaticFilter.java:99) [getRequestURL=http://www.example.com/merchant/deduct/query/v3]
  

Стол очень большой.
Сначала я хочу отфильтровать таблицу, скажем:

 select message from TBL where message like '%getRequestURL%' and date ='20190319'
  

и затем я могу использовать union query, чтобы определить, какие URL-адреса находятся в отфильтрованной таблице выше.
сказать:

     select 'com/res/doc/eula/help.html', count(1) from filtered_tbl where message like 'com/res/doc/eula/help.html'
    union
    select 'com/charge/bank/alipay_wap/', count(1) from filtered_tbl where message like 'com/charge/bank/'
    union
    select 'com/reductionActivity/queryRegisterStatus', count(1) from filtered_tbl where message like 'com/reductionActivity/queryRegisterStatus'
    union
    select 'com/charge/pushcmd', count(1) from filtered_tbl where message like 'com/charge/pushcmd'
union......
  

Поддерживает ли hive фильтр в первую очередь? Если это поддерживает, то что я могу сделать?

Комментарии:

1. вы на правильном пути. возможно, вы тоже захотите использовать регулярное выражение.

2. Положительный. Улей действительно поддерживает фильтр. И лучше использовать OR в where в одном запросе вместо нескольких запросов с объединением всех

3. @leftjoin Тогда, что я могу сделать для фильтрации в первую очередь?

4. Пример использования не ясен. Собираетесь ли вы использовать отфильтрованную таблицу много раз в запросах в одном и том же сеансе Hive? И вопрос в том, как создать отфильтрованную ВРЕМЕННУЮ таблицу? Или как отфильтровать таблицу один раз и использовать ее много раз в одном запросе