主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

testStream

创建与 MATLAB 托管的事件流的连接并应用架构处理

自 R2022b 起

    此对象需要 Streaming Data Framework for MATLAB® Production Server™

    说明

    testStream 函数创建一个 TestStream 对象,您可以使用该对象测试读取和写入由 MATLAB 托管的事件流。TestStream 对象将事件存储在 MATLAB 变量中,这些变量根据 ExportOptions 属性指定的数据类型值导出到事件流。TestStream 在读取和写入时间表数据时应用标准可配置模式处理。使用此对象在部署之前测试您的架构管理,而无需流处理服务主机。当退出 MATLAB 时,TestStream 对象中的数据就会消失。

    使用 TestStream 开发您的流处理分析函数,而无需连接或使用流处理服务(如 Kafka®)的资源。TestStream 使用 MATLAB 内存空间存储数据,因此请将此对象与有限大小的数据集一起使用。由于数据存储在 MATLAB 中,TestStream 对象的数据流传输速度通常比存储在网络或文件系统中的数据流更快。

    创建对象

    描述

    基于行的事件窗口

    ts = testStream 创建一个默认的 TestStream 对象,该对象连接到由 MATLAB 托管的事件流。该对象一次读取 100 个流事件行。

    示例

    ts = testStream(Rows=numevents) 创建一个 TestStream 对象,该对象一次读取 numevents 流事件行。

    基于持续时间的事件窗口

    ts = testStream(Duration=timespan) 创建一个 TestStream 对象,该对象读取在指定时间戳跨度内发生的流事件 timespan

    附加选项

    ts = testStream(___,Name=Value) 使用一个或多个名称值参量以及任何先前的语法设置事件流属性

    输入参量

    全部展开

    事件窗口中的事件数,指定为正整数。Rows=numevents 指定对 readtimetable 函数的调用返回的行数。如果可供读取的行数少于指定的行数,则 readtimetable 将超时并返回一个空的时间表。

    示例: Rows=500 指定每次调用 readtimetable 都会返回一个包含 500 行的时间表。

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    事件窗口中的时间戳跨度,指定为持续时间标量。Duration=timespan 根据时间戳确定 readtimetable 函数返回的事件。timespan 指定事件窗口中事件的最后一个时间戳和第一个时间戳之间的差值。

    示例: Duration=minutes(1) 指定每次调用 readtimetable 都会返回一个包含一分钟事件的时间表,其中最后一个事件的时间戳不比第一个事件的时间戳晚一分钟以上。

    数据类型: duration

    属性

    全部展开

    事件流的名称,指定为字符串标量或字符向量。提供此属性是为了与其他流对象兼容。如果您未指定名称,则 testStream 函数会在您创建 TestStream 对象时生成一个名称。

    示例: CoolingFan

    数据类型: string | char

    此 属性 为只读。

    事件窗口大小,指定为固定的时间量(使用 Duration 参量)或固定数量的消息(使用 Rows 参量)。

    数据类型: duration | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    等待流响应的策略,指定为以下值之一:

    • "Size" - 客户端优先填充事件窗口。使用这种策略,只要客户端仍在接收预期数量的消息,它可能会等待比 RequestTimeout 时间段更长的时间。默认消息数为 50。如果客户端在 RequestTimeout 时间段内没有收到任何消息,它就不再等待。

    • "Time" - 客户端严格遵守 RequestTimeout 限制,即使它没有收到预期数量的消息。RequestTimeout 指定流对象在接收事件之间等待的时间。如果流正在主动接收数据,则该操作期间不会超时。

    注意

    此对象未实现 ReadLimit 属性,也没有 RequestTimeout 属性。它是为了与其他流连接器对象兼容而提供的。通过在此对象中设置等待策略,您可以更轻松地更新代码以在实现此属性的对象之间切换,例如 KafkaStream

    事件时间戳的单位,指定为以下值之一:

    • "Milliseconds"

    • "Seconds"

    • "Minutes"

    • "Hours"

    • "Days"

    将事件时间戳解释为 UNIX® 纪元之前或之后相应单位的数量。

    数据类型: string | char

    导入和导出选项

    将流事件转换为 MATLAB 数据的规则,指定为 ImportOptions 对象。该对象控制流事件导入 MATLAB。

    将 MATLAB 数据转换为流事件的规则,指定为 ExportOptions 对象。该对象控制将 MATLAB 数据导出到流中。

    标志指示导出模式是否写入输出流,指定为逻辑标量。

    该模式嵌入在每个事件中,这可以显著增加事件的规模。如果下游应用程序不需要该模式,请将此标志设置为 false 以减少流中的字节数。

    数据类型: logical

    事件键和主体编码

    事件流中键变量的名称,指定为字符串标量或字符向量。

    数据类型: string | char

    用于解释事件键中的位的字符编码格式,指定为以下之一:

    • utf8 - UTF-8 编码格式

    • utf16 - UTF-16 编码格式

    • base64 - Base 64 编码格式

    • uint8 - 八位无符号二进制字节

    如果 KeyEncodingutf8utf16,那么 KeyType 属性必须是 text。如果 KeyEncodingbase64uint8,那么 KeyType 必须是数值编码格式之一。

    用于解释事件键中的字节的字符编码方案,指定为以下值之一:

    • uint8 - 单字节无符号整数

    • int8 - 单字节有符号整数

    • uint16 - 双字节无符号整数

    • int16 - 双字节有符号整数

    • uint32 - 四字节无符号整数

    • int32 - 四字节有符号整数

    • uint64 - 八字节无符号整数

    • int64 - 八字节有符号整数

    • single - 单精度 IEEE 754 浮点数

    • double - 双精度 IEEE 754 浮点数

    • text - 字符串

    如果 KeyTypetext,那么 KeyEncoding 属性必须是 utf8utf16。如果 KeyType 是任何其他数值编码格式,则 KeyEncoding 必须是 base64uint8

    在事件键中存储位的顺序,指定为下列之一。

    • LittleEndian - 首先存储最低有效位

    • BigEndian - 首先存储最高有效位

    • MatchHost - 位存储顺序与流处理数据框架运行的主机使用的顺序相同

    • NotApplicable - 不是整数键

    此属性仅适用于整数键,不适用于浮点或文本键。

    用于解释事件主体中的位的字符编码格式,指定为以下之一:

    • utf8 - UTF-8 编码格式

    • utf16 - UTF-16 编码格式

    • base64 - Base 64 编码格式

    • uint8 - 八位无符号二进制字节

    该属性决定事件主体中使用的字节的大小和编码,采用 BodyFormat 指定的格式。

    事件主体中的字节格式,指定为以下之一:

    • JSON - JSON 字符串

    • Array - MATLAB 数组

    • Text - 字符串数据

    • Binary - 二进制数据

    根据 BodyEncoding 指定的编码,字节可以大于八位。

    对象函数

    readtimetable从事件流读取时间表
    writetimetable将时间表写入事件流
    seek在事件流中设置读取位置
    preview预览事件流中的事件子集
    identifyingName事件流名称
    detectImportOptions根据事件流内容创建导入选项
    detectExportOptions根据事件流内容创建导出选项

    示例

    全部折叠

    创建一个 TestStream 对象来从 MATLAB 托管的事件流中读取事件并将事件写入其中。

    ts = testStream
    t = 
    
      TestStream with properties:
    
                       Name: "8ee84682-dcb6-4dc7-a10a-873f80dc5f98"
              ImportOptions: "None"
              ExportOptions: "Source: function eventSchema"
              PublishSchema: "true"
                 WindowSize: 100
                KeyVariable: "key"
                KeyEncoding: "uint8"
                    KeyType: "text"
               KeyByteOrder: "BigEndian"
               BodyEncoding: "utf8"
                 BodyFormat: "JSON"
                  ReadLimit: "Size"
        TimestampResolution: "Milliseconds"

    将示例时间表数据写入事件流。

    load indoors
    writetimetable(ts,indoors)

    预览时间表中的数据。时间表数据没有关键列,但 writetimetable 默认在流中生成一个空的关键列。这使得您的代码从使用 TestStream 对象转换为 KafkaStream 对象变得更加容易,其中包括此关键列来识别事件源。

    preview(ts)
    ans =
    
      8×3 timetable
    
             timestamp          Humidity    AirQuality    key
        ____________________    ________    __________    ___
    
        15-Nov-2015 00:00:24       36           80        "" 
        15-Nov-2015 01:13:35       36           80        "" 
        15-Nov-2015 02:26:47       37           79        "" 
        15-Nov-2015 03:39:59       37           82        "" 
        15-Nov-2015 04:53:11       36           80        "" 
        15-Nov-2015 06:06:23       36           80        "" 
        15-Nov-2015 07:19:35       36           80        "" 
        15-Nov-2015 08:32:47       37           80        "" 

    版本历史记录

    在 R2022b 中推出