Чтение данных из таблиц Iceberg
В этом разделе описана основная информация о работе с таблицами Iceberg.
Для чтения данных из таблицы Iceberg, расположенной в Yandex Object Storage, необходимо выполнить следующие шаги:
- Создать соединение, содержащее реквизиты для подключения к каталогу Iceberg.
- Выполнить запрос к требуемой таблице из каталога.
Пример запроса, выполняющего чтение данных из таблицы Iceberg:
SELECT * FROM iceberg_connection.my_table
Где:
iceberg_connection— название созданного соединения с каталогом Iceberg.my_table— имя таблицы в каталоге Iceberg.
Настройка соединения
Чтобы создать соединение с каталогом Iceberg:
-
В консоли управления
выберите каталог, в котором нужно создать соединение. -
Перейдите в сервис Yandex Query.
-
На панели слева перейдите на вкладку Соединения.
-
Нажмите кнопку
Создать. -
Укажите параметры соединения:
-
В блоке Общие параметры:
- Имя — название соединения с каталогом Iceberg.
- Тип — Iceberg.
-
В блоке Параметры типа соединения:
-
Аутентификация бакета — выберите
ПубличныйилиПриватныйв зависимости от типа доступа к чтению объектов в бакете.Для публичного бакета введите имя в поле Бакет.
Для приватного бакета:-
Выберите Облако и каталог, в котором находится источник данных.
-
Выберите или создайте новый бакет.
-
Выберите или создайте новый сервисный аккаунт с ролью
storage.viewer, от имени которого будет осуществляться доступ к данным.Чтобы использовать сервисный аккаунт, пользователю нужна роль
iam.serviceAccounts.user.
-
-
Директория — директория с каталогом Hadoop в выбранном бакете.
-
-
-
Нажмите кнопку Создать.
Синтаксис запросов
Для работы с таблицами Iceberg используется следующая форма SQL-запроса:
SELECT * FROM <соединение>.<имя_таблицы>
Где:
<соединение>— название созданного соединения с каталогом.<имя_таблицы>— имя таблицы Iceberg из каталога.
Ограничения
При работе с таблицами Iceberg существует ряд ограничений:
- Можно выполнять запросы только к таблицам, созданным в соответствии с версией 1
спецификации Iceberg. - Чтение таблиц возможно только из каталога Hadoop, размещенного в Yandex Object Storage.
- Не поддерживается чтение предыдущих состояний (снапшотов) таблицы (time travel).
Поддерживаемые типы данных
Перечень поддерживаемых типов данных Iceberg и соответствующие им типы YQL.
| Тип данных Iceberg | Тип данных Yandex Query |
|---|---|
boolean |
Bool |
int |
Int32 |
long |
Int64 |
float |
Float |
double |
Double |
date |
Date |
time |
Utf8 |
timestamp |
Utf8 |
string |
Utf8 |
binary |
String |
Выделение значимой части данных (pruning)
Запрос к таблице Iceberg может содержать фильтры, которые строятся на основе WHERE-выражения. Эти фильтры используются для сокращения объема данных, требующих обработки. Процедура сокращения называется выделение значимой части данных или отсечение лишних данных (pruning).
Отсечение лишних данных выполняется как на этапе планирования операции чтения, так и на этапе чтения.
На этапе планирования:
- считывается метаинформация таблицы Iceberg;
- определяется перечень файлов данных, требующих чтения (на основе статистики из метаданных);
- передаются отобранные файлы для чтения.
На этапе чтения:
- файлы данных разбиваются на строковые группы (row groups);
- считывается статистика для строковых групп (row groups);
- определяется перечень групп, требующих чтения (на основе статистики);
- выполняется чтение данных из отобранных групп.