Преобразование бокового вида / разнесения Hive на MAP в каскадную структуру

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

Запрос:

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]]

person rufiobangerang    schedule 04.05.2016    source источник


Ответы (1)


Да, вы можете сделать то же самое при каскадировании с помощью функций.

`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);
}`
person Vishnu    schedule 16.06.2016