Tranquility не отправляет данные в Druid

Я оцениваю Druid для своего варианта использования, который принимает данные 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"
  }
}

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

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.

person Mangat Rai Modi    schedule 16.08.2016    source источник


Ответы (3)


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

datetime.datetime.utcnow().isoformat()
person Mangat Rai Modi    schedule 19.08.2016
comment
Это неуместный вопрос к вашему посту! Но знаете ли вы разницу между windowPeriod и segmentGranularity в приведенной выше спецификации загрузки в реальном времени? Например, создает ли он сегмент на основе значения, которое вы указываете в windowPeriod или segmentGranularity? - person ; 24.08.2016
comment
Ага! Период окна связан с релевантностью данных, а степень детализации сегментов говорит о том, когда собирать данные. - person Mangat Rai Modi; 25.08.2016
comment
@MangatRaiModi Не возражаете посмотреть на вопрос здесь? stackoverflow.com/ вопросов/45206900/ Я пытаюсь отправить данные на сервер с периодом окна в один год. Tranquility получает данные, но не отправляет их. Спасибо! - person Haonan Chen; 20.07.2017

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

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

"timestampSpec" : {
    "column" : "timestamp",
    "format" : "millis"
 }
person rohit kochar    schedule 21.08.2016

Пара вещей

  1. Использовать формат даты и времени ISO 8601.
  2. Убедитесь, что записанная метка времени находится в пределах +/- 10 минут от текущего часа.
person karthik r    schedule 27.01.2017
comment
Посмотрите, что опубликовал @rohitkochar. Друид может принимать разные форматы. - person Kenji Noguchi; 29.01.2017