Есть ли способ реализовать фильтрацию / безопасность на уровне строк в таблице кустов, содержащей сложные типы, способом, который можно запрашивать с помощью Impala? - PullRequest
0 голосов
/ 13 января 2020

У меня очень большой паркетный стол, содержащий вложенные сложные типы, такие как структуры и массивы. Я разделил его по дате и хотел бы ограничить определенных пользователей, скажем, самой последней неделей данных.

Обычный способ сделать это - создать ограниченное по времени представление поверх таблицы, например:

'' 'CREATE VIEW time_limited_view AS SELECT * FROM my_table WHERE partition_date> = '2020-01-01' '' '

Это будет хорошо работать при запросе представления в Hive. Однако, если я пытаюсь запросить это представление из Impala, я получаю сообщение об ошибке:

** AnalysisException: Expr 'my_table.struct_column' в списке выбора возвращает комплексный тип **

Причина это потому, что Impala не разрешает сложные типы в списке выбора. Любое построенное мной представление, которое выбирает сложные столбцы, приведет к таким ошибкам. Если я расплющу / раскрою сложные типы, это, конечно, обойдет эту проблему. Однако из-за уровней вложенности я хотел бы сохранить структуру таблицы как есть.

Я вижу другой предложенный обходной путь - использование фильтрации на уровне строк Ranger, но у меня нет Ranger и я не смогу установить его на кластер. Будем благодарны за любые предложения по поводу обходных путей Hive / Impala SQL

...