在这里我主要借鉴课上老师讲的以及官网的API来进行简单的Spark Streaming的开发:
一:java形式:
1.我们可以总结一下步骤:
第一步:创建SparkConf对象
第二步:创建SparkStreamingContext
第三步:创建爱你SparkStreaming输入数据来源(我们将数据源配置为本地端口9999(要求端口没有被占用))
第四步:我们就像对RDD编程一样,基于DStream进行编程,原因是DStream是RDD产生的模板,在Spark Streaming发生计算前,其实质是把每个Batch的DStream的操作翻译成了RDD操作
补充说明:
除了print()方法将处理后的数据输出之外,还有其他的方法也非常重要,在开发中需要重点掌握,比如SaveAsTextFile,SaveAsHadoopFile等,最为重要的是foreachRDD方法,这个方法可以将数据写入Redis,DB,DashBoard等,甚至可以随意的定义数据放在哪里,功能非常强大。
public class WordCountOnline {
public static void main(String[] args) {
/* 第一步:配置SparkConf:
1,至少两条线程因为Spark Streaming应用程序在运行的时候至少有一条线程用于
不断地循环接受程序,并且至少有一条线程用于处理接受的数据(否则的话有线程用于处理数据,随着时间的推移内存和磁盘都会
不堪重负)
2,对于集群而言,每个Executor一般肯定不止一个线程,那对于处理SparkStreaming
应用程序而言,每个Executor一般分配多少Core比较合适?根据我们过去的经验,5个左右的Core是最佳的
(一个段子分配为奇数个Core表现最佳,例如3个,5个,7个Core等)
*/
SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("WordCountOnline");
SparkConf conf = new SparkConf().setMaster("spark://Master:7077").setAppName("WordCountOnline");
/* 第二步:创建SparkStreamingCont