2016-08-16 9 views
1

Я оцениваю Друид для моего варианта использования, который глотает данные csv через спокойствие в реальном времени. Ниже конфигурация сервера: -Спокойствие, не отправляющее данные Друиду

{ 
    "dataSources" : { 
    "audience" : { 
     "spec" : { 
     "dataSchema" : { 
      "dataSource" : "audience", 
      "parser" : { 
      "type" : "string", 
      "parseSpec":{ 
    "format" : "csv", 
    "timestampSpec" : { 
     "column" : "timestamp" 
    }, 
    "columns" : ["timestamp","partner_id","event_id","product_id","device_id","count"], 
    "dimensionsSpec" : { 
     "dimensions" : ["partner_id","event_id","product_id","device_id"] 
    } 
    } 
}, 
      "metricsSpec" : [{ "type" : "longSum", "name" : total, "fieldName" : "count" }], 
    "granularitySpec" : { 
    "segmentGranularity" : "HOUR", 
    "queryGranularity" : "HOUR", 
    "intervals" : [ "2013-08-31/2013-09-01" ] 
    } 

    }, 
     "ioConfig" : { 
      "type" : "realtime" 
     }, 
     "tuningConfig" : { 
      "type" : "realtime", 
      "maxRowsInMemory" : "100000", 
      "intermediatePersistPeriod" : "PT10M", 
      "windowPeriod" : "PT10M" 
     } 
     }, 
     "properties" : { 
     "task.partitions" : "1", 
     "task.replicants" : "1" 
     } 
    } 
    }, 
    "properties" : { 
    "zookeeper.connect" : "localhost", 
    "druid.discovery.curator.path" : "/druid/discovery", 
    "druid.selectors.indexing.serviceName" : "druid/overlord", 
    "http.port" : "8200", 
    "http.threads" : "8" 
    } 
} 

данных генерируются случайным образом с помощью питона сценария, как: -

1471336991,1,960,136,3ZLA7,1 
1471336991,1,369,367,8MP2B,1 
1471336991,2,544,550,C9ZG8,1 
1471336991,1,135,394,XFX31,1 
1471336991,2,590,552,VXMTL,1 
1471336991,1,493,615,0C2HR,1 
1471336991,2,435,710,HKYP0,1 
1471336991,1,394,483,V2HP9,1 
1471336991,2,441,376,J1LYO,1 

следующих команд представляют данные и возвращает {"result":{"received":1000,"sent":0}}

python createData.py |curl -XPOST -H'Content-Type: text/plain' --data-binary @- http://localhost:8200/v1/post/audience. 

ответ

0

наконец, смог решать проблему. На самом деле я отправлял время друиду в формат времени в эпоху, но он ожидал ISO-8601. В питоне можно легко получить так путем: -

datetime.datetime.utcnow().isoformat() 
+0

Это неподходящий вопрос к вашему сообщению! Но знаете ли вы, что разница между «windowPeriod» и «segmentGranularity» в спецификации проглатывания в реальном времени выше? Как он создает сегмент на основе значения, которое вы предоставляете в 'windowPeriod' или' segmentGranularity'? – CapturedTree

+0

Yup! Период окна - это актуальность данных, а гранулярность сегментов указывает, когда необходимо свернуть данные. –

+0

@MangatRaiModi Не возражаете, глядя на вопрос здесь? https://stackoverflow.com/questions/45206900/tranquility-server-would-not-send-data-to-druid Я пытаюсь отправить данные на сервер с периодом окна в один год. Tranquility получает данные, но не отправляет их. Благодаря! –

0

друида поддерживает множество форматов времени, которые могут быть указаны в "timestampSpec" собственности. В документации по друиду перечислены следующие форматы временных меток: «iso, millis, posix, auto или любой формат времени в формате Joda».

Например, чтобы отправить время в миллисекундах:

"timestampSpec" : { 
    "column" : "timestamp", 
    "format" : "millis" 
} 
0

Пара вещей

  1. Использование ISO 8601 Формат Datetime
  2. Убедитесь, что написано метка находится в пределах +/- 10mins от текущий час
+0

Посмотрите, что отправил @rohitkochar. Друид может принимать разные форматы. –