正文
SparkStreaming的入口是StreamingContext,通过scala实现 一个简单的实时获取数据。代码SparkStreaming官网也可以找到。
object SocketDStreamTest {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[2]").setAppName("streamTest")
val ssc = new StreamingContext(conf, Seconds(2))
val textStream: ReceiverInputDStream[String] = ssc.socketTextStream("hadoop01", 9999)
textStream.flatMap(_.split(",")).map((_, 1)).reduceByKey(_ + _).print()
ssc.start()
ssc.awaitTermination()
ssc.stop()
}
}
通过maven配置相关的配置,可能有时候会遇到如下情况:
找到你的maven配置pop.xml,将对应的spark-streaming那个节点,你会发现有一个scope节点。这个节点我认为就是一个作用范围的设置,如果从maven的官网上找配置那么会有这一个节点<scope>provided</scope>,配置为provided。而我们的SparkStreaming的官网上没有这个节点,具体原因我还没有去看。解决完这个问题,直接运行代码等待。在Linux系统中,启动$ nc -lk 9999 官网写的,启动会因为我们代码中有对9999端口的监视,然后我们往里面添加数据。它是以一行一行的去读取的。
但是缺陷就是他不会累加前后的读取结果,那么怎么去累加呢,之后会在另开一个博客讲述,当然这些官网上都是有的。就这么多了,如有不对之处,还望指点。
it's a long way for success