Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Потоковая таблица — это таблица Delta с дополнительной поддержкой потоковой или добавочной обработки данных. Потоковая таблица может быть нацелена на один или несколько потоков в конвейере.
Рекомендации о том, когда следует использовать потоковые таблицы, а не материализованные представления или представления, см. в статье Что такое конвейеры?.
Потоковые таблицы являются хорошим выбором для загрузки данных по следующим причинам:
- Каждая входная строка обрабатывается только один раз, что моделирует подавляющее большинство рабочих нагрузок по приему данных, а именно добавление или обновление строк в таблице.
- Они могут обрабатывать большие объемы данных, доступных только для добавления.
Таблицы потоковой передачи также являются хорошим выбором для низкой задержки потоковых преобразований, так как они могут работать с строками и временными окнами, обрабатывать большие объемы данных и обеспечивать обработку с низкой задержкой.
На следующей схеме показано, как потоки считываются из источников потоковой передачи и постепенно записываются в таблицу потоковой передачи в конвейере.
В каждом обновлении потоки, связанные с потоковой таблицей, считывают измененные сведения в источнике потоковой передачи и добавляют новые сведения в эту таблицу.
Потоковые таблицы принадлежат и обновляются одним конвейером. Вы явно определяете таблицы потоковой передачи в исходном коде конвейера. Таблицы, определенные конвейером, не могут быть изменены или обновлены любым другим конвейером. Можно определить несколько потоков для добавления к одной таблице потоковой передачи.
Azure Databricks создает внутренние таблицы для поддержки потоковой обработки таблиц. Эти таблицы появляются в system.information_schema.tables, но не видны в обозревателе каталогов или на других страницах пользовательского интерфейса рабочей области.
Примечание.
При создании автономной потоковой таблицы за пределами конвейера Lakeflow Azure Databricks создает конвейер, используемый для обновления таблицы. Можно увидеть конвейер, выбрав в рабочей области пункт ETL. Автономные потоковые таблицы относятся к типу MV/ST.
Дополнительные сведения о потоках см. в разделе Инкрементальная загрузка и обработка данных с помощью потоков конвейера Lakeflow.
Потоковая передача таблиц для загрузки
Потоковые таблицы предназначены для источников данных, к которым можно только добавлять, и обрабатывают входные данные единожды. Это делает их хорошо подходящими для нагрузок на прием данных, когда данные поступают непрерывно и должны надежно фиксироваться без повторной обработки существующих записей. Azure Databricks поддерживает загрузку данных в потоковые таблицы как из облачного объектного хранилища (с помощью Auto Loader), так и из потоковых брокеров сообщений, таких как Apache Kafka, Центры событий Azure и Google Pub/Sub. Инструкции приема и примеры кода см. в разделе "Загрузка данных в конвейерах".
Примечание.
Для потоковой передачи исходных данных, изменяющихся со временем (например, записей, обновляемых или удаленных в источнике), используйте AUTO CDC для применения этих изменений к таблице потоковой передачи вместо добавления их. См. сведения об отслеживании и моментальных снимках измененных данных.
Следующая диаграмма иллюстрирует, как работают потоковые таблицы в режиме только добавления.
Строка, которая уже добавлена в потоковую таблицу, не будет повторно запрашиваться с последующими обновлениями конвейера. Если изменить запрос (например, из SELECT LOWER (name)SELECT UPPER (name)), существующие строки не будут обновляться в верхнем регистре, но новые строки будут прописными. Вы можете запустить полное обновление для повторного запроса всех ранее полученных данных из исходной таблицы, чтобы обновить все строки в таблице потоковой передачи.
Транслирование таблиц и потоковая передача с низкой задержкой
Таблицы потоковой обработки предназначены для потоковой обработки с низкой задержкой при ограниченном состоянии. Потоковые таблицы используют управление контрольными точками, что делает их хорошо подходящими для обработки данных с низкой задержкой в потоковом режиме. Тем не менее, они ожидают потоки, которые естественным образом ограничены или ограничены водяным знаком.
Естественным образом ограниченный поток создается источником потоковых данных, который имеет четко определенное начало и конец. Пример естественно привязанного потока — чтение данных из каталога файлов, в которых новые файлы не добавляются после размещения первоначального пакета файлов. Поток считается ограничивающимся, так как число файлов является конечным, и поток заканчивается после обработки всех файлов.
Вы также можете использовать водяной знак для ограничения потока. Водяной знак в структурированной потоковой передаче — это механизм, который помогает обрабатывать поздние данные, указывая, сколько времени система должна ожидать отложенных событий, прежде чем считать временное окно завершённым. Неограниченный поток, который не имеет метки времени, может привести к сбою конвейера из-за давления на память.
Для производственных рабочих нагрузок, которым требуется минимально возможная задержка, можно запустить конвейер в режиме реального времени, чтобы обрабатывать записи со сквозной задержкой менее секунды.
Дополнительные сведения можно найти здесь
- Использование режима реального времени в конвейерах Lakeflow
- Оптимизация обработки с отслеживанием состояния с помощью подложек
Ограничения потоковой таблицы
Таблицы потоковой передачи имеют следующие ограничения:
-
Ограниченная эволюция. Запрос можно изменить без повторной компиляции всего набора данных. Без полного обновления потоковая таблица видит только каждую строку один раз, поэтому различные запросы будут обрабатывать разные строки. Например, при добавлении
UPPER()в поле запроса только строки, обработанные после изменения, будут в верхнем регистре. Это означает, что необходимо знать обо всех предыдущих версиях запроса, выполняющихся в наборе данных. Для повторной обработки существующих строк, обработанных до изменения, требуется полное обновление. - Управление состоянием: Потоковые таблицы обеспечивают низкую задержку и требуют потоков, которые естественным образом ограничены или ограничены тайм-кодом. Дополнительные сведения см. в статье "Оптимизация обработки с сохранением состояния с помощью водяных знаков".
- Соединения не перекомпьютерируются: Соединения в таблицах потоковой передачи не перекомпьютерируются при изменении измерений. Эта характеристика может быть хорошей для сценариев "быстро, но неправильно". Если вы хотите, чтобы представление всегда было правильным, может потребоваться использовать материализованное представление. Материализованные представления всегда правильны, так как они автоматически перекомпьютерируют соединения при изменении измерений. Для получения дополнительной информации см. материализованные представления. Пример объединения потока в статическую таблицу измерений см. в разделе "Поток-статические соединения".
-
Нет
CLONEподдержки: таблицы потоковой передачи нельзя использовать в качестве источника или целевого объекта глубокого или мелкого клона. Другие неподдерживаемые команды см. в разделе "Ограничения". -
REFRESHпривилегия, необходимая для просмотра конвейера: Чтобы просмотреть конвейер, лежащий в основе потоковой таблицы, пользователю, не являющемуся администратором, помимо разрешений на конвейер требуется привилегияREFRESHдля потоковой таблицы. Узнайте , кто может просматривать конвейер и его выходные данные?.