跳到主要内容 跳到补充内容

连接到数据流

Qlik Open Lakehouse 项目中支持以下数据流服务。事件数据持续摄取,以确保下游数据集成、分析和 AI 的近乎实时可用性,从而实现反映最新操作活动的低延迟管道。

Apache Kafka 和 Amazon Kinesis 等数据流服务提供持久、高吞吐量的管道,用于捕获实时操作事件。与依赖批处理摄取的文件源不同,数据流源在事件生成时持续传输数据,从而实现近乎实时的处理,无需等待文件生成或调度。生产者发布保留其架构并支持分区的结构化或半结构化消息。同一记录的所有更新和删除都必须使用相同的分区键。Kafka 和 Kinesis 仅在单个分区或分片内(而非整个主题或数据流中)保证排序,因此使用一致的分区键可确保给定记录的更改按正确顺序处理。Qlik 还支持将 Amazon S3 作为数据流源,用于持续摄取事件数据。

数据流式摄取与批量摄取

数据流和批处理数据源的区别如下:

  • 对于这两种数据源,事件每分钟高效摄取,支持低延迟处理和近实时分析。

  • 对于非数据流数据源,首先会进行现有数据的满负载,然后摄取更改。您还可以从数据源重新加载满负载数据。

  • 对于数据流数据源,初始加载和后续事件之间没有明确的区别。Qlik 可以管理保留,并且还支持分区。

信息注释流式任务根据计算使用量(vCore x 运行时)而不是数据量计费。

Qlik Open Lakehouse 项目中,流式源只能与 流式登陆任务流式转换任务 一起使用:

  • 流式数据使用 流式登陆任务 摄取,流式登陆任务不处理离散文件,而是读取到达的事件,将数据登陆到 Amazon S3 中,并将事件持久化为 Avro 文件。这种方法保留了架构演变,支持结构体等复杂数据类型,并提供高效存储和优化的查询性能,同时保持连续摄取模型。

  • 当您从数据流源载入数据时,系统会自动为每个将以 Iceberg 格式存储的数据集添加一个数据流转换任务。您可以选择使用数据流转换任务来标准化结构、丰富事件负载或使数据与下游消费模型保持一致。

  • 通过镜像数据任务,可以将数据流源中的数据集镜像到云数据仓库,从而使下游系统能够消费数据流事件而无需复制数据。有关更多信息,请参阅将数据镜像到云数据仓库

数据类型映射

初始源架构基于在创建管道项目时 PREPARE 阶段之前获取的数据样本,并且架构演变在读取时处理。不支持 STRUCT 和 ARRAY 的镜像任务及其他下游任务使用 JSON 类型。数据可以使用 SQL 进行解析。

以下数据类型映射适用于所有受支持的数据源,但会根据源文件类型而异,并且应注意以下事项:

  • 数据类型是从正在载入的数据样本中推断出来的。例如,如果字段在样本中仅包含整数值,则它在数据流登陆和转换任务中创建为 INT8。如果后续数据包含双精度小数,则登陆文件会包含这些值;但是,在数据流转换任务中,如果更改字段数据类型设置为忽略,则列仍为 INT8,并且小数部分将被截断。为避免意外截断,请确保样本数据在载入前包含所有预期的值范围,或者在早期阶段将更改字段数据类型配置为停止任务,并根据需要调整数据类型。

  • 如果源中的结构体添加了字段,则该字段始终会添加到登陆目标。对于数据流转换,将根据在数据流转换任务设置 > 架构演变 > 向结构体添加字段中选择的选项应用行为(应用于目标忽略停止任务)。

  • 如果特定记录中缺少字段,或者数组为空,则它们被视为 null。

  • 如果数据集通过数组进行平展,并且到达的记录中该数组为空或 null,则系统会创建一行,并且平展字段为 null。它不会自动排除。如果您想排除这些行,请手动添加筛选器,例如 array_element IS NOT NULL

  • UI 中显示的数据类型反映了所选数据集的粒度。对于扁平数组,显示的是单个元素的数据类型,而不是数组结构本身。

  • 不能在嵌套 JSON 字段中的结构体内部添加新属性,只能在根级别添加。

  • 在数据流转换任务中,仅支持对数组的单个级别进行展平。当展平应用于多级数组时,例如 ARRAY<ARRAY<STRUCT>>,只有外部数组会被展平,从而得到 ARRAY<STRUCT>,而不是完全展平的 STRUCT。此外,当前 UI 仅允许在列级别配置展平。因此,选择多级数组会隐式地将展平仅应用于第一个数组级别。

JSON

在 JSON 文件中,源中的数值决定了目标数据类型:

  • INT8 用于在支持的整数范围内且不包含小数部分的整数值。

  • REAL8 (DOUBLE) 用于值包含小数部分(浮点数)的情况。

  • STRING 用于数值超出支持的最大整数范围的情况。

数据类型映射如下:

源数据类型 Qlik Talend Data Integration 个数据类型
STRING STRING
数字 INT8
数字 REAL8
数字 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:ssyyyy-MM-ddTHH:mm:ssz的时间戳将被解析为日期时间类型。如果包含时区,则该值将解析为字符串。

Parquet

Parquet 文件支持物理和逻辑数据类型。物理数据类型定义了值在磁盘上的存储方式,例如 INT32、DOUBLE 或 BYTE_ARRAY。逻辑数据类型在物理表示之上提供语义,例如,识别整数值是否表示日期。当逻辑类型附加到 Parquet 列并在 Qlik Open Lakehouse 中受支持(如下所列)时,Streaming 登陆任务在定义目标架构时使用逻辑类型,而不是底层物理类型。这确保数据得到正确解释,保留了预期的语义(如精确度、比例和时间含义),并在数据写入下游格式时生成更准确的架构。

从 Parquet 文件获取的数据映射如下:

源数据类型 逻辑类型 Qlik Talend Data Integration 个数据类型
BOOLEAN   BOOLEAN
INT32   INT8
INT64   INT8
INT96   DATETIME
FLOAT   REAL8
DOUBLE   REAL8
BYTE_ARRAY   STRING(编码为 Base64)
FIXED_LEN_BYTE_ARRAY   字符串(Base64 编码)
BYTE_ARRAY STRING STRING
BYTE_ARRAY ENUM STRING
INT32 DECIMAL INT8
INT64 DECIMAL INT8
FIXED_LEN_BYTE_ARRAY DECIMAL INT8/REAL8(Base64 编码)
BYTE_ARRAY DECIMAL INT8/REAL8(Base64 编码)
INT32 DATE DATE
INT32 TIME(MILLIS,true) INT8
INT64 TIME(MICROS,true) TIME
INT64 TIMESTAMP(MICROS,true) DATETIME
INT64 TIMESTAMP(MILLIS,true) DATETIME
嵌套类型   STRUCT
列表   ARRAY
MAP   ARRAY<STRUCT>。表示键值对的结构体数组。

Avro

以下映射适用于带有架构注册表的 Avro 文件。

源数据类型 逻辑类型 Qlik Talend Data Integration 个数据类型
BOOLEAN   BOOLEAN
INT   INT8
LONG   INT8
FLOAT   REAL8
DOUBLE   REAL8
BYTES   STRING
STRING   STRING
RECORD   STRUCT
ENUM   STRING
ARRAY   ARRAY
MAP   数组<结构体>
并集    
固定   STRING
BYTES DECIMAL DECIMAL
固定 DECIMAL DECIMAL
INT DATE DATE
INT 时间-毫秒 INT8
INT TIME-MICROS TIME
LONG TIMESTAMP-MILLIS DATETIME
LONG TIMESTAMP-MICROS DATETIME

ORC

以下映射适用于 ORC 文件。

源数据类型 Qlik Talend Data Integration 个数据类型
BOOLEAN BOOLEAN
BYTE 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 ARRAY<STRUCT>. 表示键值对的结构体数组。
STRUCT STRUCT
UNION  

限制

以下限制适用于所有数据源:

  • 如果您的文件类型不同,这可能发生在文件源自多个来源或版本时,则使用单个样本文件(例如,在入门期间)创建的转换任务不会自动考虑这些差异。

  • 如果您更改登陆任务中的数据类型,例如因为您需要对数据进行哈希处理,请确保转换数据类型与新数据类型匹配。

支持的源

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!