Spark Streaming是一种实时数据处理框架,它可以从多个数据源(如Kafka,Flume,Twitter等)中获取数据流,并将其转换为RDDs。它使用Spark Core的RDD API来处理数据流。它还可以将处理后的数据流存储到HDFS或者其他存储系统中。
Spark Streaming的工作原理是通过将数据流分割成小块来实现的。这些小块被称为“批”。在一个批中,Spark Streaming会读取一些数据并将其转换为RDDs。然后,Spark Streaming会使用RDD API来对这些RDDs进行处理。最后,处理后的RDDs会被写入到HDFS或者其他存储系统中。
// 创建 SparkStreamingContext 对象 val ssc = new SparkStreamingContext(sparkConf, Seconds(5)) // 读取 Kafka 数据 val kafkaStream = KafkaUtils.createDirectStream[String, String](ssc, PreferConsistent, Subscribe[String, String](topicsSet, kafkaParams)) // 处理 Kafka 数据 val lines = kafkaStream.map(_.value) val words = lines.flatMap(_.split(" ")) val wordCounts = words.map(x => (x, 1L)).reduceByKey(_ + _) wordCounts.print() // 启动 SparkStreamingContext 上下文对象 ssc ssc.start() // Start the computation ssc.awaitTermination() // Wait for the computation to terminate
Spark streaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。我们可以从kafka、flume、Twitter、 ZeroMQ、Kinesis等源获取数据,也可以通过由高阶函数map、reduce、join、window等组成的复杂算法计算出数据。最后,处理后的数据可以推送到文件系统、数据库、实时仪表盘中。事实上,你可以将处理后的数据应用到Spark的机器学习算法、图处理算法中去。
在内部,它的工作原理如下图所示。Spark Streaming接收实时的输入数据流,然后将这些数据切分为批数据供Spark引擎处理,Spark引擎将数据生成最终的结果数据。
Spark Streaming支持一个高层的抽象,叫做离散流(discretized stream
)或者DStream
,它代表连续的数据流。DStream既可以利用从Kafka, Flume和Kinesis等源获取的输入数据流创建,也可以在其他DStream的基础上通过高阶函数获得。在内部,DStream是由一系列RDDs组成。
本指南指导用户开始利用DStream编写Spark Streaming程序。用户能够利用scala、java或者Python来编写Spark Streaming程序。
注意:Spark 1.2已经为Spark Streaming引入了Python API。它的所有DStream transformations和几乎所有的输出操作可以在scala和java接口中使用。然而,它只支持基本的源如文本文件或者套接字上的文本数据。诸如flume、kafka等外部的源的API会在将来引入。
基本概念
监控应用程序
性能调优
内存调优
Neo4j的特点 SQL就像简单的查询语言Neo4j CQL 它遵循属性图数据模型它通过使用Apache Lucence支持索引它支持UNIQUE约束它包含一...
Neo4j CQL LIMIT子句Neo4j CQL已提供“LIMIT”子句来过滤或限制查询返回的行数。 它修剪CQL查询结果集底部的结果。 如果我们要修...
在本章中,我们将讨论如何使用ZIP文件安装Neo4j数据库服务器。 如果要安装具有exe文件格式的Neo4j数据库服务器,请参考上一章。...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介...