2016-05-04 2 views
0

У меня есть запрос на улей, который взрывает структуру карты, чтобы проверить конкретное значение в значении пары ключ-значение. Возможно ли это сделать в каскадировании?Convert Hive боковое представление/взорваться на MAP в каскадную структуру

Этот запрос:

SELECT entry_id, entry_key 
FROM entries 
LATERAL VIEW explode(values) values_explode AS user_id, user_map 
WHERE user_id IN (1, 2, 3) 

И схема таблиц для записей является:

entry_id::string 

entry_key::string 

values::map[bigint, array[bigint]] 

ответ

0

Да, вы можете сделать то же самое в каскадных используя functons.

`public class CascadingExplode extends BaseOperation<Void> implements Function<Void> { 
    public CascadingExplode(Fields fields) { 
     super(fields); 
    } 
    @Override 
    public void operate(FlowProcess flowProcess, FunctionCall<Void> functionCall) { 
     List<Tuple> tuples = (Tuple)functionCall.getArguments().getObject("values"); 
     Tuple explodedT=new Tuple(); 
     explodedT.add(tuples.getInteger("field_name")); 
     ... 
     ... 
     functionCall.getOutputCollector().add(explodedT); 
}` 
Смежные вопросы