首页 > 解决方案 > Azure Eventhub 多列

问题描述

我正在阅读有关通过 eventthub 将推文流式传输到 Databricks 的 Azure 教程,并通过认知服务进行情绪分析(链接到那个)。这很好,但我想对推文的位置进行一些分析。本教程仅将推文的文本(我相信)发送到 eventthub。请注意下面 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)
      }

发送事件在这里:

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() 并将其发送到 eventthub,以便稍后从 eventthub 中提取给定推文的 geoLocation 和/或文本吗?

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

标签: azuredatabricksazure-eventhub

解决方案


EventData 对象仅传输二进制数据。你在那里放什么完全取决于你。人们经常会创建一个 JSON 结构,将其保存为字符串,然后转换为字节。所以而不是

sendEvent(status.getText(), 5000)

你可以做类似(一些伪代码)

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

推荐阅读