2016-04-28 1 views
4

Сейчас я пытаюсь создать набор данных для своих данных orion со всей информацией об объектах. Я правильно настроил и когда некоторые данные меняют orion, отправьте уведомление в cygnus, а затем cygnus добавит данные в ckan. Как видно на рисунке.Как объединить несколько объектов orion в один набор данных ckan с использованием cygnus?

My arquitecture

Проблема заключается в том, что Cygnus создать ckan ресурс для каждого объекта. Что я могу сделать, чтобы cygnus поместил все данные только в один ресурс? Спасибо.

EDIT 1:

Я только что узнал, что я могу упростить, сделав только один абонемент в Орионе.

{ 
    "entities": [ 
     { 
      "type": "Room", 
      "isPattern": "true", 
      "id": "Room.*" 
     } 
    ] ... 

Затем я заметил функцию группировки (http://fiware-cygnus.readthedocs.io/en/develop/installation_and_administration_guide/grouping_rules_conf/index.html) в Лебеде, но сейчас я потерял, потому что Cygnus не хочет, чтобы загрузить свой файл конфигурации группирования. Он показывает эту ошибку:

time=2016-05-03T05:32:29.658CDT | lvl=INFO | trans= | srv= | subsrv= | function=<init> | comp=Cygnus | msg=com.telefonica.iot.cygnus.interceptors.GroupingRules[58] : No grouping rules have been read 
Exception in thread "Thread-1" java.lang.NullPointerException 
    at java.io.File.<init>(File.java:277) 
    at com.telefonica.iot.cygnus.interceptors.GroupingInterceptor$ConfigurationReader.run(GroupingInterceptor.java:244) 

В моем файле конфигурации агента у меня есть:

cygnusagent.sources.http-source.interceptors.gi.gropuing_rules_conf_file = /usr/cygnus/conf/grouping_rules.conf 

И в grouping_rules.conf:

{ 
    "grouping_rules": [ 
     { 
      "id": 1, 
      "fields": [ 
       "entityId" 
      ], 
      "regex": "room.*", 
      "destination": "Rooms", 
      "fiware_service_path": "/myhouse" 
     } 
    ] 
} 

Edit 2:

I имеют все линии, как указано в документации:

cygnusagent.sources = http-source 
    cygnusagent.sinks = ckan-sink 
    cygnusagent.channels = ckan-channel 

    cygnusagent.sources.http-source.channels = ckan-channel 
    cygnusagent.sources.http-source.type = org.apache.flume.source.http.HTTPSource 
    cygnusagent.sources.http-source.port = 5050 
    cygnusagent.sources.http-source.handler = com.telefonica.iot.cygnus.handlers.OrionRestHandler 
    cygnusagent.sources.http-source.handler.notification_target = /notify 
    cygnusagent.sources.http-source.handler.default_service = test 
    cygnusagent.sources.http-source.handler.default_service_path = /myhouse 
    cygnusagent.sources.http-source.handler.events_ttl = 5 
    cygnusagent.sources.http-source.interceptors = ts gi 
    cygnusagent.sources.http-source.interceptors.ts.type = timestamp 
    cygnusagent.sources.http-source.interceptors.gi.type = com.telefonica.iot.cygnus.interceptors.GroupingInterceptor$Builder 
    cygnusagent.sources.http-source.interceptors.gi.gropuing_rules_conf_file = /usr/cygnus/conf/grouping_rules.conf 
cygnusagent.channels.ckan-channel.type = memory 
cygnusagent.channels.ckan-channel.capacity = 1000 
cygnusagent.channels.ckan-channel.transactionCapacity = 100 

# ============================================ 
# OrionCKANSink configuration 
# channel name from where to read notification events 
cygnusagent.sinks.ckan-sink.channel = ckan-channel 

# sink class, must not be changed 
cygnusagent.sinks.ckan-sink.type = com.telefonica.iot.cygnus.sinks.OrionCKANSink 

# true if the grouping feature is enabled for this sink, false otherwise 
cygnusagent.sinks.ckan-sink.enable_grouping = true 

# true if lower case is wanted to forced in all the element names, false otherwise 
cygnusagent.sinks.hdfs-sink.enable_lowercase = false 

# the CKAN API key to use 
cygnusagent.sinks.ckan-sink.api_key = 436fffc8-b397-478a-92fd-bbc5ffaf8269 

# the FQDN/IP address for the CKAN API endpoint 
cygnusagent.sinks.ckan-sink.ckan_host = ckan-demo.ckan.io 

# the port for the CKAN API endpoint 
cygnusagent.sinks.ckan-sink.ckan_port = 80 

# Orion URL used to compose the resource URL with the convenience operation URL to query it 
cygnusagent.sinks.ckan-sink.orion_url = http://localhost:1026 

# how the attributes are stored, either per row either per column (row, column) 
cygnusagent.sinks.ckan-sink.attr_persistence = column 

# enable SSL for secure Http transportation; 'true' or 'false' 
cygnusagent.sinks.ckan-sink.ssl = false 

# number of notifications to be included within a processing batch 
cygnusagent.sinks.ckan-sink.batch_size = 100 

# timeout for batch accumulation 
cygnusagent.sinks.ckan-sink.batch_timeout = 60 

# number of retries upon persistence error 
cygnusagent.sinks.ckan-sink.batch_ttl = 10 

права файл кажется, нормально для меня:

[[email protected] conf]# ls *.conf -l 
-rwxrwxrwx 1 cygnus cygnus 2675 may 3 06:45 agent_test.conf 
-rwxrwxrwx 1 cygnus cygnus 258 may 3 05:08 grouping_rules.conf 
-rwxr-xr-x 1 cygnus cygnus 135 mar 1 02:50 krb5_login.conf 

Тест Па нормально:

Results : 

Tests run: 80, Failures: 0, Errors: 0, Skipped: 0 

    [INFO] ------------------------------------------------------------------------ 
    [INFO] BUILD SUCCESS 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Total time: 1:05.862s 
    [INFO] Finished at: Tue May 03 06:53:44 CDT 2016 
    [INFO] Final Memory: 41M/105M 
    [INFO] ------------------------------------------------------------------------ 

Команда запуска я использую: /usr/cygnus/bin/cygnus-flume-ng agent --conf /usr/cygnus/conf/ -f /usr/cygnus/conf/agent_test.conf -n cygnusagent -Dflume.root.logger=INFO,console

ответ

2

Да, вы правы , Правила группировки предназначены для того, чтобы использовать варианты использования как тот, который вы описываете. Таким образом, определяя простое правило с регулярным выражением, соответствующее типу всех сущностей (при условии, что такой тип всегда один и тот же), следует сделать трюк; или с помощью регулярного выражения, совпадающего с общей частью идентификатора объекта (как вы предлагаете).

Тем не менее, ваша проблема, похоже, связана с правилами группировки. Вы говорите, что ваша конфигурация содержит:

cygnusagent.sources.http-source.interceptors.gi.gropuing_rules_conf_file = /usr/cygnus/conf/grouping_rules.conf 

Можете ли вы подтвердить, что у вас есть что-то вроде этого?

cygnus-ngsi.sources.http-source.interceptors = ts gi 
cygnus-ngsi.sources.http-source.interceptors.ts.type = timestamp 
cygnus-ngsi.sources.http-source.interceptors.gi.type = com.telefonica.iot.cygnus.interceptors.GroupingInterceptor$Builder 

Кроме того, вы можете проверить права доступа /usr/cygnus/conf/grouping_rules.conf? Возможно, он не может быть прочитан пользователем, работающим с Cygnus.

Что касается правила, новый путь службы FIWARE должен начинаться с /, так как все пути службы FIWARE должны начинаться с косой черты (я думаю, что это неправильно описано в последней версии).

HTH!

EDIT 1:

Я думаю, что я нашел эту проблему. Конфигурированное имя параметра «... gro p uing ...», в то время как правильный «... группировка ...» :)

+0

Я редактировал вопрос с дополнительной информацией. Я также изменил путь службы, добавив /. Проблема не знает почему. Спасибо за ответ. –

+0

Какая версия Cygnus работает в течение года? Можете ли вы добавить пастебин со всеми журналами цикла Cygnus, пожалуйста? Меня интересуют следы, написанные с самого начала процесса. – frb

+0

Я использую cygnus 0.13.0 pastebin-> http://pastebin.com/wGLz1NPV –

Смежные вопросы