Нет, такой рекомендации нет. Учти это:
Дело в том, что представление раздела в Hive - это папка с именем типа 'key=value'
или это может быть просто 'value'
, но в любом случае это имя строковой папки. Таким образом, он сохраняется как строка и преобразуется во время чтения / записи. Значение ключа раздела не упаковано в файлы данных и не сжато.
Из-за распределенного / параллельного характера карт-редукции и Impalla вы никогда не заметите разницы в производительности обработки запросов. Также все данные будут сериализованы для передачи между этапами обработки, затем снова десериализованы и приведены к некоторому типу, это может происходить много раз для одного и того же запроса.
Существует много накладных расходов, создаваемых распределенной обработкой и сериализацией / десериализацией данных. Практически имеет значение только размер данных. Чем меньше таблица (размер файла), тем быстрее она работает. Но вы не улучшите производительность, ограничивая типы.
Значения больших строк, используемые в качестве ключей разделов, могут влиять на производительность базы данных метаданных, а также на количество обрабатываемых разделов также может влиять на производительность. Опять то же самое: здесь важен только размер данных , а не типы.
1, 0
может быть лучше, чем 'Yes', 'No'
только из-за размера. А сжатие и параллелизм могут сделать эту разницу незначительной во многих случаях.