AWS Athena - лучшие практики для типов данных

Я планирую использовать большой набор данных в сотни гигабайт в Amazon S3 / Athena, и у меня есть вопрос к опытным практикам относительно передовых методов хранения данных (с точки зрения затрат и производительности).

Мой набор данных строк содержит около 40 столбцов с элементами, похожими на числа, дату и строки. Мои запросы будут выполнять некоторые арифметические операции и группировку довольно часто.

Хорошая ли идея хранить все данные в виде строк? Какие плюсы и минусы такого подхода? (введение приведения и преобразования типов данных на лету при запросе)

или лучше сразу реализовать преобразования и хранить числа в числовом формате, даты в форматах timestmap и т. д.


person emzet    schedule 08.03.2018    source источник


Ответы (1)


У меня есть два предложения для вас.

  1. Я предполагаю, что вы уже делаете это, но используйте столбчатый формат, такой как Parquet, для хранения ваших данных. Это позволит вашим запросам сканировать меньше данных (при условии целевых запросов) для ваших запросов, что сделает их более производительными и менее затратными, поскольку запросы Athena взимают плату за ТБ отсканированных данных.

  2. Что касается типов данных столбцов, я бы использовал соответствующие числовые типы для числовых полей и полей даты. При представлении числа в виде строки он потребляет 1 или более байтов на цифру (в зависимости от кодировки) самого числа, что неэффективно, когда дело доходит до хранения числового значения. Возьмем, например, число 203. В качестве строки потребуется три байта для ее кодирования с помощью UTF-8 (1 байт для «2», 1 байт для «0» и 1 байт для «3»). Но числовое значение поместится в один беззнаковый байт.

Вы должны увидеть улучшения как в стоимости, так и в производительности с обоими этими изменениями.

person nicholas.hauschild    schedule 09.03.2018