Azure Eventhub Несколько столбцов - PullRequest
0 голосов
/ 30 января 2020

Я работаю над учебными пособиями Azure по потоковой передаче твитов через концентратор событий в блоки данных и через когнитивные службы для анализа настроений ( ссылка на этот ). Это работает нормально, но я хотел бы провести анализ местоположения твита. Учебник только отправляет текст твита (я полагаю) в концентратор событий. Обратите внимание на status.getText () в приведенном ниже коде Scala.

while (!finished) {
        val result = twitter.search(query)
        val statuses = result.getTweets()
        var lowestStatusId = Long.MaxValue
        for (status <- statuses.asScala) {
          if(!status.isRetweet()){
            sendEvent(status.getText(), 5000)
          }
          lowestStatusId = Math.min(status.getId(), lowestStatusId)
        }
        query.setMaxId(lowestStatusId - 1)
      }

sendEvent находится здесь:

def sendEvent(message: String, delay: Long) = {
      sleep(delay)
      val messageData = EventData.create(message.getBytes("UTF-8"))
      eventHubClient.get().send(messageData)
      System.out.println("Sent event: " + message + "\n")
    }

Могу ли я также вызвать geoLocation () и отправить его в концентратор событий, чтобы я мог получить геолокацию и / или текст для заданного Чирикать из EventHub позже?

Главным образом интересно, может ли EventData.create () каким-то образом отправлять два "столбца" (свойства) для одной и той же "строки" (отдельное событие).

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Объект EventData поддерживает множество свойств приложения, в которые вы можете помещать небольшие данные для быстрой откачки на стороне получателя в зависимости от вашего приложения и бизнес-логики c.

var eventData = new EventData(Encoding.UTF8.GetBytes("Hello EventHub!"));

eventData.Properties["ContosoEventType"] = "some value here";
0 голосов
/ 30 января 2020

Объект EventData транспортирует только двоичные данные. То, что вы положили туда, полностью зависит от вас. Очень часто люди создают структуру JSON, которая сохраняется в виде строки и затем преобразуется в байты. Поэтому вместо

sendEvent(status.getText(), 5000)

вы можете сделать что-то вроде (немного псевдокода)

sendEvent('{"text": "' + status.getText() + '", "location":"' + yourLocation + '"}', 5000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...