Azure Eventhub多列

问题描述 投票:0回答:2

我正在通过Azure教程研究如何通过eventhub将推文流传输到Databricks中,并通过认知服务进行情感分析(link to that)。很好,但是我想对推文的位置进行一些分析。本教程仅将tweet的文本(我相信)发送到eventhub。注意下面的Scala代码中的status.getText()。

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,以便稍后可以从eventhub中提取给定推文的geoLocation和/或文本吗?

主要是想知道EventData.create()是否可以为同一“行”(单个事件)发送两个“列”(属性)。

azure databricks azure-eventhub
2个回答
0
投票

EventData对象仅传输二进制数据。您在其中放置的内容完全取决于您。人们通常会创建一个JSON结构,该结构将另存为字符串,然后转换为字节。所以代替

sendEvent(status.getText(), 5000)

您可以做类似(伪代码的位)

sendEvent('{"text": "' + status.getText() + '", "location":"' + yourLocation + '"}', 5000)

0
投票

EventData对象支持应用程序属性包,根据您的应用程序和业务逻辑,您可以填充小数据以在接收方进行快速查找。

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

eventData.Properties["ContosoEventType"] = "some value here";
© www.soinside.com 2019 - 2024. All rights reserved.