SparkStreaming простой пример (oldAPI)

SparkStreaming простой пример

◆ Построение программы Streaming: (WordCount) 

  ◆ Спарк Streaming лучшей программы для использования Maven в виде отдельных приложений или SBT перевода пробега.

  ◆ Подготовка:
  1. Свеча потокового введение JAR
  2.scala потока вычислений импорта декларации
  импорта org.apache.spark.streaming.StreamingContext
  импорта org.apache.spark.streaming.StreamingContext._
  импорта org.apache.spark.streaming.dstream .DStream
  Импорт org.apache.spark.streaming.Duration
  Импорт org.apache.spark.streaming.Seconds

 

1. Объекты инициализации StreamingContext

   // Создание локального StreamingContext два рабочих потоки и пакетный интервал в 1 секунду.
   новый новый SparkConf конф = Val ()
   conf.setMaster ( "локальный [2]")
   conf.setAppName ( "NetworkWordCount")
   Вал SSC = новый новый StreamingContext (конф, Секунды (. 1))

2. Получить объекты DStream 

  // создать соединение с именем хоста DStream, как локальный хост: 9999

   знач линии = ssc.socketTextStream ( "локальный", 9999)

3. Объекты Операция DStream

  // Каждая строка полученных данных делятся на слова пробела 

  lines.flatMap слов = Val (_. Split ( ""))
  // StreamingContext введена в неявном
  импорта org.apache.spark.streaming.StreamingContext._

   // для каждой партии новообращенного слова подводить

  words.map пар = Val (Word => (Word ,. 1))
  Val wordcounts = pairs.reduceByKey (_ + _)
  // печати по умолчанию каждой партии , прежде чем десять элементов к консоли
  wordCounts.print ()

4. Запустить обработчик потока

  ssc.start // подсчитывали

  ssc.awaitTermination () // Ожидаем вычислить окончание

  ssc.stop () // Конец приложения

 

Запустить сетевой порт, передача аналоговых данных

  1. н.д. средства команды, введите данные вручную

    Linux / Mac: н.д.

    Окна: кот

      н.д. -lk 9999

  2 с помощью кода, написанного в генераторе данных моделирования  

Пакет com.briup.streaming 

Импорт java.io.PrintWriter
 Импорт java.net.ServerSocket 

Импорт scala.io.Source 

Объект MassageServer { 

  // определение случайных целых чисел метода сбора 
  индекса DEF (длина: Int) = {
     Импорт java.util.Random 
    RDM Val = новый новый Случайные 
    rdm.nextInt (длина) 
  } 

  DEF Основные (арг: Массив [String]) { 
    Println ( «аналоговые данные начинают !!!» )
     // Получить общее количество строк , указанных файлов 
    Вэл имя файла = «Спарк / ihaveadream.txt " ; 
    Вал Линия =  Source.fromFile (имя файла) .getLines.toList
    Вал filerow = lines.length 

    // указывает монитор порта, соединение устанавливается , когда внешняя программа запрашивает 
    Val = ServerSocket новый новый в ServerSocket (9999 ), 

    в то время как ( к истинному ) {
       // слушающий порт 9999, приобретает штуцеры объект 
      Val гнездо = ServerSocket.accept ()
       //       Println (Socket) 
      новая новая нить () { 
        переопределение RUN DEF = { 
          Println ( "Got от Connected Клиента:" + socket.getInetAddress) 

          Вал OUT = новые новый PrintWriter (Socket.getOutputStream (), к истине ) 

          это время (к подлинному ) {
            Thread.sleep ( 1000 )
             // когда порт принимает запрос, эквайринг случайной линии передачи данных друг с другим 
            Val Content = Lines (индекс (filerow)) 

            Println (Content) 

            out.write (Content + '\ n-' ) 

            OUT. флеш () 
          } 
          () Socket.close 
        } 
      } .start () 
    } 
  } 
}
Данные аналоговых передач

 

 

Меры предосторожности:

◆ все шаги , прежде чем 1. Запустите Спарк Streaming сделал создать поток исполнения, программа не реальное
подключение к источнику данных, ни операции с данными, просто настроить все реализации плана
◆ 2. Когда ssc.start ( ) после запуска программы действительно сделать все ожидаемое рабочее
◆ 3. выполнение будет осуществляться в другом потоке, так что надо ждать вычисления вызова потока awaitTermination завершена
◆ 4. контекст потоковой передачи может быть активирован только один раз
◆ 5. Если режим локального режима , убедитесь , что установлен локальный [N], п> = 2 1 - й для приема, устройство для обработки

 
пакет com.briup.streaming 

импорт org.apache.log4j {Level, Logger}.
 импорт org.apache.spark.SparkConf
 импорт org.apache.spark.streaming {Продолжительность, StreamingContext}. 

Объект MyTestOldAPI { 
  Защиты основного (арг: Array [ String]): Unit = {
     // 设置日志级别 
    Logger.getLogger ( "орг" ) .setLevel (Level.WARN) 

    // 1获取DS 
    вал конф = новый SparkConf () setAppName ( "MyTestOldAPI") setMaster (».. местный [*]» ) 
    вал СППР = новый StreamingContext (конф, продолжительность (1000 )) 
    знач Д.С.Dss.socketTextStream = ( "локальный", 9999 ) 

    // 2 логика   // Статистические 
    Рез знач = ds.filter (_! = "") .FlatMap (_. Split ( "")). Карта (слово => ( Слово ,. 1)). reduceByKey (_ + _) 

    res.print () 

    // . 3 открыта в режиме реального времени задачи обработки 
    dss.start () 
    dss.awaitTermination () 
    dss.stop () 
  } 
}

 

рекомендация

отwww.cnblogs.com/Diyo/p/11392059.html
рекомендация