2016-11-22 5 views
0

Spark/Scalaの新機能です。 SparkStreamingを使用してデバイスからクラウドへのメッセージを処理して、Azure IoTHubに送信します。 Unfortunatelly IoThubとの接続を確立できません。私はhereと記載された情報を使用しようとしました。Spark StreamingContextをAzure IoThubに作成中にエラーが発生しました。

これは私のコードです:

package com.aimaps.iot; 

import com.microsoft.spark.streaming.examples.arguments.EventhubsArgumentParser.ArgumentMap 
import com.microsoft.spark.streaming.examples.arguments.{EventhubsArgumentKeys, EventhubsArgumentParser} 
import com.microsoft.spark.streaming.examples.common.StreamStatistics 
import org.apache.spark._ 
import org.apache.spark.sql.SparkSession 
import org.apache.spark.streaming.eventhubs.EventHubsUtils 
import org.apache.spark.streaming.{Seconds, StreamingContext} 
import org.apache.log4j.{Level, Logger} 

object EventhubsListener { 

    def main (args: Array[String]) { 

    val eventhubsParams = Map[String, String] (
     "eventhubs.namespace" -> "SIGFOX-AIMAPS-TEST.azure-devices.net", 
     "eventhubs.name" -> "SIGFOX-AIMAPS-TEST", 
     "eventhubs.policyname" -> "policyName", 
     "eventhubs.policykey" -> "policyKey", 
     "eventhubs.consumergroup" -> "$Default", 
     "eventhubs.partition.count" -> "2", 
     "eventhubs.checkpoint.dir" -> "./EventCheckpoint", 
     "eventhubs.checkpoint.interval" -> "1" 
    ) 

    val ssc = new StreamingContext("local[*]", "IoT Test", Seconds(10)) 

    val rootLogger = Logger.getRootLogger() 
    rootLogger.setLevel(Level.ERROR) 

    val stream = EventHubsUtils.createUnionStream(ssc, eventhubsParams) 

    stream.foreachRDD((rdd, time) => { 
      if (rdd.count() > 0) { 
      println(f"Recieved ${rdd.count()} messages.") 
      } else { 
      println("No messages recieved.") 
      } 

     }  
    ) 

    ssc.start() 
    ssc.awaitTermination() 

    } 

} 

私はこのエラーを取得しています:

ERROR ReceiverTracker: Deregistered receiver for stream 0: Restarting receiver with delay 2000ms: Error handling message, restarting receiver - com.microsoft.azure.servicebus.CommunicationException: java.nio.channels.UnresolvedAddressException. This is usually caused by incorrect hostname or network configuration. Please check to see if namespace information is correct. TrackingId: 5778876f-a4d5-4bf9-8260-83daaaf83ccf, at: 2016-11-22T11:21:46.805+01:00[Europe/Bratislava] 
    at com.microsoft.azure.servicebus.MessagingFactory$RunReactor.run(MessagingFactory.java:371) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.nio.channels.UnresolvedAddressException 
    at sun.nio.ch.Net.checkAddress(Net.java:101) 
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622) 
    at org.apache.qpid.proton.reactor.impl.IOHandler.handleBound(IOHandler.java:155) 
    at org.apache.qpid.proton.reactor.impl.IOHandler.onUnhandled(IOHandler.java:372) 
    at org.apache.qpid.proton.engine.BaseHandler.onConnectionBound(BaseHandler.java:58) 
    at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:131) 
    at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) 
    at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:309) 
    at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:277) 
    at com.microsoft.azure.servicebus.MessagingFactory$RunReactor.run(MessagingFactory.java:340) 
    ... 1 more 

は私が接続パラメータとして何を使うべきでしょうか?どこでAzure IoTHub名前空間を取得できますか?

答えて

-1

あなた自身の値をeventhubsParamsに指定する必要があります。

"SIGFOX-AIMAPS-TEST.azure-devices.net"

これはイベントハブの名前空間ではなく、Azure IoTハブのホスト名です。

where can I get Azure IoTHub namespace?

あなたはこれを試すことができます:ここで

In the Azure portal, click More services on the bottom of the left management pane. Type Event hubs in the field provided and click Event hubs. This launches a new browser window to display the SERVICE BUS area in the classic portal.あなたが作成したイベントのハブを見ることができます。この図では、名前空間はtolldataで始まる名前空間です。

enter image description here

関連する問題