不能在mysql接收器上使用attr_persistence列

时间:2015-12-14 10:08:31

标签: flume fiware fiware-cygnus

我试图将列类型与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') 

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

1 个答案:

答案 0 :(得分:0)

这是因为OrionMySQLSink的列持久性模式要求事先创建表。可以找到详细的解释here。基本上是:

  

请注意并非始终通知相同数量的属性;这取决于对类NGSI发送者的订阅。对于行持久性模式,这不是问题,因为为每个通知的属性插入了固定的8字段数据行。然而,列模式可能受到几个不同长度的数据行的影响(在字段方面)。因此,仅当您的订阅设计为始终发送相同的属性时,才建议使用列模式,如果自上次通知后未更新,则建议使用该事件。

     

此外,在列模式下运行时,由于Cygnus不知道通知属性的数量(因此数据存储区中要写入的字段数),因此无法自动创建表,必须进行配置以前到天鹅座执行。这不是行模式的情况,因为要写入的字段数总是不变的,与通知属性的数量无关。

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