Чтение данных из таблиц 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);
- определяется перечень групп, требующих чтения (на основе статистики);
- выполняется чтение данных из отобранных групп.