Имена столбцов
Имена столбцов определяются командой CREATE EXTERNAL TABLE
.Я рекомендую вам назвать что-то полезное, чтобы было легче писать запросы.Имена столбцов не обязательно должны совпадать с именами в реальном файле.(Он не интерпретирует строки заголовка.)
Секционирование
Из Данные секционирования - Amazon Athena :
Чтобы создать таблицу с разделами, вы должны определить ее в операторе CREATE TABLE.Используйте PARTITIONED BY для определения ключей, с помощью которых можно разделить данные.
Поле, используемое для разделения данных, NOT хранится в самих файлах, поэтому их нет вопределение таблицы.Скорее, значение столбца хранится в имени каталога .
Это может показаться странным (хранение значений в имени каталога!), Но на самом деле имеет смысл, поскольку позволяет избежать ситуаций, когда неправильныйзначение хранится в папке.Например, если есть папка year=2018
, что произойдет, если файл содержит столбец, в котором год равен 2017
?Этого можно избежать, сохранив year
в имени каталога, так что любым файлам в этом каталоге присваивается значение, обозначенное в имени каталога.
В запросах все еще можно использовать WHERE year = 2018
, даже если это не так.указан в качестве фактического столбца.
См. также: LanguageManual DDL - Apache Hive - Apache Software Foundation
Другая полезная вещь заключается в том, что данные можно обновлять, просто перемещаяфайл в другой каталог.В этом примере это изменило бы значение year
в результате нахождения в другом каталоге.
Да, это странно, но хитрость заключается в том, чтобы перестать думать об этом как о обычной базе данных и оценить свободучто он предлагает.Например, добавить новые данные так же просто, как перенести файл в каталог.Загрузка не требуется!