Перейти к основному содержимому Перейти к дополнительному содержимому

Подключение к потокам данных

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

Потоковые службы, такие как Apache Kafka и Amazon Kinesis, предоставляют надежные, высокопроизводительные конвейеры для захвата операционных событий по мере их возникновения. В отличие от файловых источников, которые полагаются на пакетную загрузку, потоковые источники непрерывно доставляют данные по мере возникновения событий, обеспечивая обработку практически в реальном времени без ожидания генерации или планирования файлов. Производители публикуют структурированные или полуструктурированные сообщения, которые сохраняют свою схему и поддерживают секционирование. Все обновления и удаления для одной и той же записи должны использовать один и тот же ключ секционирования. Kafka и Kinesis гарантируют упорядочивание только в пределах одной секции или сегмента, а не по всему разделу или потоку, поэтому использование согласованного ключа секционирования гарантирует, что изменения для данной записи обрабатываются в правильной последовательности. Qlik также поддерживает Amazon S3 в качестве источника потоковой передачи для непрерывного приема данных событий.

Потоковый прием данных в сравнении с пакетным приемом данных

Различие между потоковыми и пакетными источниками данных заключается в следующем:

  • С обоими источниками события эффективно поступают каждую минуту, поддерживая обработку с низкой задержкой и аналитику почти в реальном времени.

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

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

Примечание к информацииЗадачи потоковой передачи оплачиваются на основе использования вычислительных ресурсов (виртуальные ядра x время выполнения), а не объема данных.

В проекте Открытое озеро данных Qlik источники потоковой передачи могут использоваться только с задачей промежуточного хранения потока и задачей преобразования потока:

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

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

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

Сопоставления типов данных

Исходная схема основана на выборке данных, взятой до фазы PREPARE при создании проекта конвейера, а эволюция схемы обрабатывается во время чтения. Задачи зеркалирования и другие последующие задачи, которые не поддерживают STRUCT и ARRAY, используют тип JSON. Данные можно анализировать с помощью SQL.

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

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

  • Если поле добавляется в структуру в источнике, оно всегда добавляется в целевой объект промежуточного хранения. Для потокового преобразования поведение применяется в соответствии с опцией, выбранной в Настройки задачи потокового преобразования > Эволюция схемы > Добавить поля в структуру (Применить к целевому объекту, Игнорировать, Остановить задачу).

  • Если поле отсутствует в определенной записи или массив пуст, они рассматриваются как null.

  • Если набор данных сглаживается массивом, и поступает запись, где этот массив пуст или null, система создает одну строку, и сглаженное поле становится null. Это не исключается автоматически. Если вы хотите исключить эти строки, вручную добавьте фильтр, например, array_element IS NOT NULL.

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

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

  • В задачах преобразования потоковой передачи поддерживается сглаживание только для одного уровня массива. Когда сглаживание применяется к многоуровневому массиву, например, ARRAY<ARRAY<STRUCT>>, сглаживается только внешний массив, что приводит к ARRAY<STRUCT>, а не к полностью сглаженной структуре STRUCT. Кроме того, текущий пользовательский интерфейс позволяет настраивать сглаживание только на уровне столбца. В результате выбор многоуровневого массива неявно применяет сглаживание только к первому уровню массива.

JSON

В файлах JSON числовое значение в источнике определяет целевой тип данных:

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

  • REAL8 (DOUBLE) используется, когда значение содержит дробную часть (число с плавающей запятой).

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

Типы данных сопоставляются следующим образом:

Типы исходных данных Qlik Talend Data Integration типов данных
STRING STRING
NUMBER INT8
NUMBER REAL8
NUMBER STRING
BOOLEAN BOOLEAN
ARRAY ARRAY
OBJECT STRUCT

CSV, TSV, REGEX и SPLIT

По умолчанию все исходные типы данных импортируются как строка. Используйте параметр Автоматически определять типы для сопоставления исходных и целевых типов следующим образом:

Типы исходных данных Qlik типов данных
NUMERIC INT8/REAL8
True/TRUE/true/False/FALSE/false BOOLEAN
TIMESTAMP Метки времени в формате yyyy-MM-dd HH:mm:ss или yyyy-MM-ddTHH:mm:ssz анализируются как тип datetime. Если включен часовой пояс, значение анализируется как строка.

Parquet

Файлы Parquet поддерживают физические и логические типы данных. Физические типы данных определяют, как значения хранятся на диске, например INT32, DOUBLE или BYTE_ARRAY. Логические типы данных обеспечивают семантическое значение поверх физического представления, например, определяя, представляет ли целочисленное значение дату. Когда логический тип прикреплен к столбцу Parquet и поддерживается в Открытое озеро данных Qlik (как указано ниже), задача промежуточного хранения Streaming использует логический тип при определении целевой схемы, а не базовый физический тип. Это гарантирует правильную интерпретацию данных, сохраняет предполагаемую семантику, такую как Πрецизионность, масштаб и временное значение, и приводит к более точным схемам при записи данных в нижестоящие форматы.

Данные, полученные из файлов Parquet, сопоставляются следующим образом:

Типы исходных данных Логические типы Qlik Talend Data Integration типов данных
BOOLEAN   BOOLEAN
INT32   INT8
INT64   INT8
INT96   DATETIME
FLOAT   REAL8
DOUBLE   REAL8
МАССИВ БАЙТОВ   STRING (Закодировано как Base64)
массив байтов фиксированной длины   СТРОКА (Закодировано как Base64)
МАССИВ БАЙТОВ STRING STRING
МАССИВ БАЙТОВ ENUM STRING
INT32 DECIMAL INT8
INT64 DECIMAL INT8
массив байтов фиксированной длины DECIMAL INT8/REAL8 (Закодировано как Base64)
МАССИВ БАЙТОВ DECIMAL INT8/REAL8 (Закодировано как Base64)
INT32 DATE DATE
INT32 ВРЕМЯ(МИЛЛИС,true) INT8
INT64 ВРЕМЯ(МИКРОС,true) TIME
INT64 TIMESTAMP(MICROS,true) DATETIME
INT64 TIMESTAMP(MILLIS,true) DATETIME
ВЛОЖЕННЫЕ ТИПЫ   STRUCT
LIST   ARRAY
MAP   ARRAY<STRUCT>. Массив структур, представляющих пары «ключ-значение».

Avro

Следующие сопоставления применяются к файлам Avro с реестром схем.

Типы исходных данных Логические типы Qlik Talend Data Integration типов данных
BOOLEAN   BOOLEAN
INT   INT8
Long   INT8
FLOAT   REAL8
DOUBLE   REAL8
BYTES   STRING
STRING   STRING
ЗАПИСЬ   STRUCT
ENUM   STRING
ARRAY   ARRAY
MAP   МАССИВ<СТРУКТУРА>
ОБЪЕДИНЕНИЕ    
ФИКСИРОВАННЫЙ   STRING
BYTES DECIMAL DECIMAL
ФИКСИРОВАННЫЙ DECIMAL DECIMAL
INT DATE DATE
INT TIME-MILLIS INT8
INT TIME-MICROS TIME
Long TIMESTAMP-MILLIS DATETIME
Long TIMESTAMP-MICROS DATETIME

ORC

Следующие сопоставления применяются к файлам ORC.

Типы исходных данных Qlik Talend Data Integration типов данных
BOOLEAN BOOLEAN
БАЙТ INT8
SHORT INT8
INT INT8
Long INT8
DATE DATE
FLOAT REAL8
DOUBLE REAL8
TIMESTAMP DATETIME
BINARY STRING
DECIMAL REAL8
STRING STRING
VARCHAR STRING
CHAR STRING
СПИСОК ARRAY
MAP МАССИВ<СТРУКТУРА>. Массив структур, представляющих пары ключ-значение.
STRUCT STRUCT
UNION  

Ограничения

Следующие ограничения применяются ко всем источникам данных:

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

  • Если вы изменяете типы данных в задаче промежуточного хранения, например потому, что вам нужно хешировать данные, убедитесь, что типы данных преобразования соответствуют новым типам данных.

Поддерживаемые источники

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!