Функция ускорения запросов в Azure Data Lake Storage

Используя ускорение запросов, приложения и аналитические фреймворки могут оптимизировать обработку данных. Они получают только те данные, необходимые для выполнения определённой операции. Такой подход сокращает время и вычислительные мощности, необходимые для получения информации о хранящихся данных.

Обзор

Ускорение запросов поддерживает фильтрующие предикаты и проекции столбцов. Используя эти предикаты и проекции, приложения могут фильтровать строки и столбцы при чтении данных с диска. Только данные, соответствующие условиям предиката, передаются по сети приложению. Этот подход снижает сетевую задержку и вычислительные затраты.

Используйте SQL для указания предикатов фильтра строк и проекций столбцов в запросе ускорения запроса. Имейте в виду следующие ограничения:

  • Запрос обрабатывает только один файл.
  • Ускорение запросов не поддерживает продвинутые реляционные функции SQL, такие как объединения и группировка по агрегатам.
  • Ускорение запросов поддерживает форматированные данные CSV и JSON в качестве входных данных для каждого запроса.

Функция ускорения запросов не ограничивается хранилищем данных типа Data Lake (учетными записями хранения, у которых включено иерархическое пространство имен). Ускорение запросов совместимо с большими двоичными объектами в учетных записях хранения, на которых не включено иерархическое пространство имен. Эта совместимость означает, что вы можете добиться такого же снижения сетевой задержки и вычислительных затрат при обработке данных, которые уже хранятся в виде blob в аккаунтах хранения.

Пример использования ускорения запросов в клиентском приложении см. в статье "Фильтрация данных с помощью ускорения запросов Azure Data Lake Storage".

Поток данных

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

Диаграмма, показывающая, как приложение использует ускорение запросов для фильтрации и обработки данных.

  1. Клиентское приложение запрашивает данные файлов, указывая предикаты и проекции столбцов.

  2. Ускорение запросов анализирует указанный SQL-запрос и распределяет работу для анализа и фильтрации данных.

  3. Процессоры считывают данные с диска, анализируют их с помощью соответствующего формата, а затем фильтруют данные, применяя заданные предикаты и проекции столбцов.

  4. Ускорение запросов объединяет шарды ответа и передаёт их клиентскому приложению в потоковом режиме.

  5. Клиентское приложение получает и анализирует потокованный ответ. Приложению не нужно фильтровать другие данные и напрямую применять требуемые вычисления или преобразование.

Повышение производительности при более низкой стоимости

Ускорение запросов оптимизирует производительность, уменьшая объём данных, которые ваше приложение передаёт и обрабатывает.

Чтобы вычислить агрегированное значение, приложения обычно извлекают все данные из файла, а затем обрабатывают и фильтруют данные локально. Анализ паттернов ввода и вывода (I/O) для аналитических рабочих нагрузок показывает, что приложениям обычно требуется всего 20% прочитанных данных для выполнения конкретных вычислений. Эта статистика является верной даже после применения таких методов, как обрезка разделов. В результате приложения без необходимости переносят, анализируют и фильтруют 80% данных. Этот шаблон, предназначенный для удаления ненужных данных, вызывает значительные затраты на вычислительные ресурсы.

Хотя Azure обладает высокопроизводительной сетью как по пропускной способности, так и по задержке, бессмысленная передача данных по этой сети всё равно дорога для производительности приложений. Отфильтровав нежелательные данные во время запроса на хранение, ускорение запросов устраняет эту стоимость.

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

Приложения, которые могут воспользоваться ускорением запросов

Ускорение запросов разработано для распределённых аналитических фреймворков и приложений для обработки данных:

  • Распределённые аналитические фреймворки , такие как Apache Spark и Apache Hive, включают в фреймворк уровень абстракции хранения данных. Эти подсистемы также включают оптимизаторы запросов, которые могут включать знания о возможностях базовой службы ввода-вывода при определении оптимального плана запросов пользователей. Эти фреймворки интегрируют ускорение запросов. В результате пользователи этих платформ видят улучшенную задержку запросов и более низкую общую стоимость владения, не изменяя запросы.

  • Приложения для обработки данных обычно выполняют масштабные преобразования данных, которые могут не приводить напрямую к аналитическим инсайтам, поэтому они не всегда используют устоявшиеся распределённые аналитические фреймворки. Эти приложения часто имеют более прямую связь с базовым сервисом хранения, поэтому могут напрямую получать пользу от таких функций, как ускорение запросов.

Пример того, как приложение может интегрировать ускорение запросов, см. в статье "Фильтрация данных с помощью ускорения запросов Azure Data Lake Storage".

Ценообразование

Из-за увеличения вычислительной нагрузки в сервисе Azure Data Lake Storage модель ценообразования для ускорения запросов отличается от обычной модели транзакций Azure Data Lake Storage. Ускорение запросов взимает плату за объем отсканированных данных, а также плату за объем данных, возвращенных вызывающему клиенту. Дополнительные сведения см. в разделе о ценах на Azure Data Lake Storage.

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

Дальнейшие шаги