Форматировщик Hive
Форматируйте Apache Hive HiveQL по правилам Hive для идентификаторов в обратных кавычках, строк в одинарных и двойных кавычках с экранированием обратной косой чертой и переменных ${hivevar:name}. CLUSTER BY, DISTRIBUTE BY и SORT BY сохраняются как отдельные предложения, LATERAL VIEW и LEFT SEMI JOIN начинаются с новых строк, а для столбцов и условий задаются отступы. Инженерам по данным, работающим с Hadoop, незакрытые строки и скобки отмечаются с указанием строки и столбца.
Часто задаваемые вопросы
Какой синтаксис HiveQL распознаётся?
Распознаются идентификаторы в обратных кавычках и строки в одинарных и двойных кавычках с экранированием обратной косой чертой. Индексы Map['key'] и array[0], а также подстановки переменных, например ${hivevar:date} и ${hiveconf:x}, сохраняются без изменений.
Какие предложения Hive размещаются на отдельных строках?
CLUSTER BY, DISTRIBUTE BY и SORT BY обрабатываются так же, как ORDER BY. LATERAL VIEW, LATERAL VIEW OUTER и LEFT SEMI JOIN начинаются с новых строк, как и JOIN.
Сохраняются ли подстановки переменных?
Да. Заполнители ${hivevar:...} и ${hiveconf:...} сохраняются в точности как написаны. Двоеточие внутри них не отделяется пробелами.
Можно ли форматировать инструкции INSERT OVERWRITE?
Да. INSERT OVERWRITE TABLE ... PARTITION (...) остаётся в одной строке, а питающая его инструкция SELECT форматируется ниже.
Поддерживается ли MERGE?
Да. Ветви WHEN MATCHED и WHEN NOT MATCHED инструкций ACID MERGE начинаются с новых строк.
Сохраняются ли комментарии?
Да. Комментарии -- и блочные комментарии /* ... */ остаются на месте. Для многострочных блочных комментариев отступы обновляются в соответствии с новым форматированием.
Меняется ли регистр ключевых слов?
Нет. Ключевые слова и имена сохраняют регистр, в котором вы их написали. Меняются только пробелы и переносы строк.
Какие ошибки обнаруживаются?
Незакрытые строки, идентификаторы в обратных кавычках, индексы и блочные комментарии, а также несбалансированные скобки — для каждого случая указываются строка и столбец. На вашем кластере ничего не выполняется.
Каков максимальный размер входных данных?
До 1 МБ на запрос и 128 КБ на инструкцию. Скрипты с большим количеством инструкций форматируются по одной инструкции за раз.
Можно ли выбрать отступы и сохраняется ли мой SQL?
Используйте 2 или 4 пробела либо табуляцию. SQL форматируется только в памяти и никогда не сохраняется.