1

我正在尝试将列类型与 OrionMySQLSink 一起使用。我的代理有这个代码:

cygnusagent.sinks.mysql-sink.type = com.telefonica.iot.cygnus.sinks.OrionMySQLSink
cygnusagent.sinks.mysql-sink.channel = mysql-channel
cygnusagent.sinks.mysql-sink.enable_grouping = false
cygnusagent.sinks.mysql-sink.mysql_host = localhost
cygnusagent.sinks.mysql-sink.mysql_port = 3306
cygnusagent.sinks.mysql-sink.mysql_username = ********
cygnusagent.sinks.mysql-sink.mysql_password = *********
cygnusagent.sinks.mysql-sink.table_type = table-by-destination
cygnusagent.sinks.mysql-sink.attr_persistence = column
cygnusagent.sinks.mysql-sink.batch_size = 1
cygnusagent.sinks.mysql-sink.batch_timeout = 10

使用水槽时出现此错误:

2015-12-14 08:43:58,118 (SinkRunner-PollingRunner-DefaultSinkProcessor) [ERROR - com.telefonica.iot.cygnus.sinks.OrionSink.process(OrionSink.java:187)] Persistence error (Unknown database 'fiw-serv') 

我对行模式没有任何问题,只有列模式。

4

1 回答 1

0

那是因为OrionMySQLSink需要提前创建表的列持久化模式。可以在这里找到详细的解释。基本上:

请注意并不总是通知相同数量的属性;这取决于对类似 NGSI 的发件人的订阅。这对于行持久模式来说不是问题,因为每个通知属性都会插入固定的 8 字段数据行。然而,列模式可能会受到多个不同长度的数据行(就字段而言)的影响。因此,仅当您的订阅旨在始终发送相同的属性时,才建议使用列模式,如果它们自上次通知以来未更新,则事件。

此外,在列模式下运行时,由于 Cygnus 不知道通知属性的数量(以及因此要写入 Datastore 中的字段数量),因此无法自动创建表,必须预先配置给天鹅座处决。这不是行模式的情况,因为要写入的字段数量始终是恒定的,与通知属性的数量无关。

类似的情况也发生在OrionCKANSink,其中资源、数据存储和视图必须提前创建。

于 2015-12-14T10:15:52.553 回答