복붙노트

[HADOOP] 웹 사이트에서 데이터 스트림을 읽도록 스파크 스트리밍을 시도하는 중 소켓은 무엇입니까?

HADOOP

웹 사이트에서 데이터 스트림을 읽도록 스파크 스트리밍을 시도하는 중 소켓은 무엇입니까?

이 데이터를 http://stream.meetup.com/2/rsvps에서 스파크 스트림으로 가져 오려고합니다.

그들은 JSON 객체이며, 줄이 문자열이 될 것이라는 것을 알고 있습니다. JSON을 시도하기 전에이 줄이 작동하기를 원합니다.

나는 항구로 무엇을 넣어야할지 모르겠다. 나는 그것이 문제라고 생각한다.

SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("Spark Streaming");

JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(1));

JavaReceiverInputDStream<String> lines = jssc.socketTextStream("http://stream.meetup.com/2/rsvps", 80);


lines.print();

jssc.start();
jssc.awaitTermination();

여기에 내 오류가있다.

java.net.UnknownHostException: http://stream.meetup.com/2/rsvps
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)

해결법

  1. ==============================

    1.socketTextStream은 http 클라이언트로 작동하도록 설계되지 않았습니다. 이미 알게 되듯이 맞춤 수신기를 만들어야합니다. 시작할 수있는 장소 중 하나는 회의용 스트리밍 데이터 소스의 일부로 만든 수신기를 기반으로합니다 (https://github.com/actions/meetup-stream/blob/ 참조). 마스터 / src / main / scala / receiver / MeetupReceiver.scala).

    socketTextStream은 http 클라이언트로 작동하도록 설계되지 않았습니다. 이미 알게 되듯이 맞춤 수신기를 만들어야합니다. 시작할 수있는 장소 중 하나는 회의용 스트리밍 데이터 소스의 일부로 만든 수신기를 기반으로합니다 (https://github.com/actions/meetup-stream/blob/ 참조). 마스터 / src / main / scala / receiver / MeetupReceiver.scala).

  2. ==============================

    2.커스텀 리시버에 대한 spark 문서를 따르는 커스텀 UrlReceiver가 있습니다 :

    커스텀 리시버에 대한 spark 문서를 따르는 커스텀 UrlReceiver가 있습니다 :

    class UrlReceiver(urlStr: String) extends Receiver[String](StorageLevel.MEMORY_AND_DISK_2) with Logging {
    
      override def onStart() = {
        new Thread("Url Receiver") {
          override def run() = {
            val urlConnection: URLConnection = new URL(urlStr).openConnection
            val bufferedReader: BufferedReader = new BufferedReader(
              new InputStreamReader(urlConnection.getInputStream)
            )
            var msg = bufferedReader.readLine
            while (msg != null) {
              if (!msg.isEmpty) {
                store(msg)
              }
              msg = bufferedReader.readLine
            }
            bufferedReader.close()
          }
        }.start()
      }
    
      override def onStop() = {
        // nothing to do
      }
    }
    

    다음과 같이 사용하십시오.

    val lines = sc.receiverStream(new UrlReceiver("http://stream.meetup.com/2/rsvps"))
    
  3. from https://stackoverflow.com/questions/30672898/trying-to-get-spark-streaming-to-read-data-stream-from-website-what-is-the-sock by cc-by-sa and MIT license