Загрузка данных из Microsoft Azure Storage
Selena предоставляет следующие варианты загрузки данных из Azure:
- Синхронная загрузка с использованием INSERT+
FILES() - Асинхронная загрузка с использованием Broker Load
Каждый из этих вариантов имеет свои преимущества, которые подробно описаны в следующих разделах.
В большинстве случаев мы рекомендуем использовать метод INSERT+FILES(), который гораздо проще в использовании.
Однако метод INSERT+FILES() в настоящее время поддерживает только форматы файлов Parquet, ORC и CSV. Поэтому, если вам нужно загрузить данные других форматов файлов, таких как JSON, или выполнить изменения данных, такие как DELETE, во время загрузки данных, вы можете использовать Broker Load.
Перед началом работы
Подготовка исходных данных
Убедитесь, что исходные данные, которые вы хотите загрузить в Selena, правильно хранятся в контейнере внутри вашей учётной записи хранения Azure.
В этой теме предположим, что вы хотите загрузить данные из примера набора данных в формате Parquet (user_behavior_ten_million_rows.parquet), хранящегося в корневом каталоге контейнера (selena-container) внутри учётной записи хранен ия Azure Data Lake Storage Gen2 (ADLS Gen2) (selena).
Проверка привилегий
Вы можете загружать данные в таблицы Selena только как пользователь, имеющий привилегию INSERT на эти таблицы Selena. Если у вас нет привилегии INSERT, следуйте инструкциям в разделе GRANT, чтобы предоставить привилегию INSERT пользователю, которого вы используете для подключения к вашему cluster Selena. Синтаксис: GRANT INSERT ON TABLE <table_name> IN DATABASE <database_name> TO { ROLE <role_name> | USER <user_identity>}.
Сбор данных аутентификации
Примеры в этой теме используют метод аутентификации Shared Key. Чтобы убедиться, что у вас есть разрешение на чтение данных из ADLS Gen2, мы рекомендуем прочитать Azure Data Lake Storage Gen2 > Shared Key (ключ доступа учётной записи хранения), чтобы понять параметры аутентификации, которые вам нужно настроить.
Вкратце, если вы используете аутентификацию Shared Key, вам нужно собрать следующую информацию:
- Имя пользователя вашей учётной записи хранения ADLS Gen2
- Shared key вашей учётной записи хранения ADLS Gen2
Для получения информации обо всех доступных методах аутентификации см. Аутентификация в облачном хранилище Azure.
Использование INSERT+FILES()
Этот метод доступен начиная с версии v1.5.2 и в настоящее время поддерживает только форматы файлов Parquet, ORC и CSV (начиная с версии v1.5.2).
Преимущества INSERT+FILES()
FILES() может читать файл, хранящийся в облачном хранилище, на основе указанных вами свойств, связанных с путём, выводить схему таблицы данных в файле, а затем возвращать данные из файла в виде строк данных.
С помощью FILES() вы можете:
- Запрашивать данные напрямую из Azure с помощью SELECT.
- Создавать и загружать таблицу с помощью CREATE TABLE AS SELECT (CTAS).
- Загружать данные в существующую таблицу с помощью INSERT.
Типичные примеры
Прямой запрос из Azure с помощью SELECT
Прямой запрос из Azure с помощью SELECT+FILES() позволяет получить хороший предварительный просмотр содержимого набора данных перед созданием таблицы. Нап ример:
- Получить предварительный просмотр набора данных без сохранения данных.
- Запросить минимальные и максимальные значения и решить, какие типы данных использовать.
- Проверить наличие значений
NULL.
Следующий пример запрашивает пример набора данных user_behavior_ten_million_rows.parquet, хранящийся в контейнере selena-container внутри вашей учётной записи хранения selena:
SELECT * FROM FILES
(
"path" = "abfss://selena-container@selena.dfs.core.windows.net/user_behavior_ten_million_rows.parquet",
"format" = "parquet",
"azure.adls2.storage_account" = "selena",
"azure.adls2.shared_key" = "xxxxxxxxxxxxxxxxxx"
)
LIMIT 3;
Система возв ращает результат запроса, аналогичный следующему:
+--------+---------+------------+--------------+---------------------+
| UserID | ItemID | CategoryID | BehaviorType | Timestamp |
+--------+---------+------------+--------------+---------------------+
| 543711 | 829192 | 2355072 | pv | 2017-11-27 08:22:37 |
| 543711 | 2056618 | 3645362 | pv | 2017-11-27 10:16:46 |
| 543711 | 1165492 | 3645362 | pv | 2017-11-27 10:17:00 |
+--------+---------+------------+--------------+---------------------+
ПРИМЕЧАНИЕ
Обратите внимание, что имена столбцов, возвращённые выше, предоставлены файлом Parquet.