Use la idea para escribir SparkStreaming_reduceByKeyAndWindow

Use la idea para escribir la
función de ventana SparkStreaming_reduceByKeyAndWindow :
Inserte la descripción de la imagen aquí
demostración de código:

paquete cn.itcast.streaming
import org.apache.spark.streaming.dstream. {DStream, ReceiverInputDStream}
import org.apache.spark.streaming. {Segundos, StreamingContext}
import org.apache.spark. {SparkConf, SparkContext}
objeto WordCount3 {
def main (args: Array [String]): Unit = {
// 1. Create StreamingContext
//spark.master debe establecerse como local [n], n> 1
val conf = new SparkConf (). setAppName ("wc ”) .SetMaster (“ local [*] ”)
val sc = new SparkContext (conf)
sc.setLogLevel (“ WARN ”)
val ssc = new StreamingContext (sc, Seconds (5)) // 5 significa hacer coincidir los datos en 5 segundos Dividir en un RDD
// 2. Escuchar los datos recibidos de Socket
// ReceiverInputDStream es el RDD compuesto de todos los datos recibidos, encapsulados en DStream, y la siguiente operación en DStream es operar en RDD
val dataDStream: ReceiverInputDStream [String] = ssc.socketTextStream ("hadoop01", 9999)
// 3.
Manipule datos val wordDStream: DStream [String] = dataDStream.flatMap ( .split (""))
val wordAndOneDStream: DStream [(String , Int)] = wordDStream.map ((
, 1))
val wordAndCount: DStream [(String, Int)] = wordAndOneDStream.reduceByKeyAndWindow ((a: Int, b: Int) => a + b, Segundos (10), Segundos (5))
// 4. Use la función de ventana para contar WordCount
// reduceFunc: (V, V) => V, función agregada
// windowDuration: Duración, longitud / ancho de ventana
// slideDuration: Duración, intervalo de desplazamiento de ventana
/ / Nota: windowDuration y slideDuration deben ser múltiplos de
batchDuration // windowDuration = slideDuration: los datos no se perderán y no se volverán a calcularUtilizará
// windowDuration> slideDuration en desarrollo: los datos se calcularán repetidamente
Durante el desarrollo,
// windowDuration <slideDuration: los datos se perderán
// representación de código:
// windowDuration = 10
// slideDuration = 5
// El resultado de la ejecución es calcular los datos de los últimos 10 segundos cada 5 segundos
// Por ejemplo, le permite contar durante el desarrollo La última hora de datos se calcula cada 1 minuto, entonces, ¿cómo establecer los parámetros?
WordAndCount.print ()
ssc.start () // Abrir
ssc.awaitTermination () // Esperar una parada elegante
}
}}

Ejecución:
1. Primero ejecute nc -lk 9999
2. Luego ejecute el código anterior
3.
Ingrese constantemente diferentes palabras en 1 hadoop spark sqoop hadoop spark hive hadoop
4. Observe el
fenómeno de salida de la consola IDEA : sparkStreaming calcula la corriente cada 5s Datos dentro del tamaño de la ventana de 10 segundos y luego generar los datos resultantes.

238 artículos originales publicados · elogiados 429 · 250,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_45765882/article/details/105563227
Recomendado
Clasificación