spark实战java_Scala和Java二种方式实战Spark Streaming开发

一、Java方式开发

1、开发前准备

假定您以搭建好了Spark集群。

2、开发环境采用eclipse maven工程,需要添加Spark Streaming依赖。

7ed364350fd53e1f4e42337b3ee26bba.png

3、Spark streaming 基于Spark Core进行计算,需要注意事项:

设置本地master,如果指定local的话,必须配置至少二条线程,也可通过sparkconf来设置,因为Spark Streaming应用程序在运行的时候,至少有一条线程用于不断的循环接收数据,并且至少有一条线程用于处理接收的数据(否则的话无法有线程用于处理数据),随着时间的推移,内存和磁盘都会不堪重负)。

温馨提示:

对于集群而言,每隔exccutor一般肯定不只一个Thread,那对于处理Spark Streaming应用程序而言,每个executor一般分配多少core比较合适?根据我们过去的经验,5个左右的core是最佳的(段子:分配为奇数个core的表现最佳,例如:分配3个、5个、7个core等)

接下来,让我们开始动手写写Java代码吧!

第一步:

858d828387d115344583ea7781d01ae0.png

第二步:

5e2a21836e612730fd9f603ae23028d6.png

我们采用基于配置文件的方式创建SparkStreamingContext对象

9ea3344de6232e203ebd045554af9592.png

31cea581d15518270dcffb475476f519.png

第三步,创建Spark Streaming输入数据来源:

我们将数据来源配置为本地端口9999(注意端口要求没有被占用):

bc5d262b0b8260ec6090362bdff54117.png

第四步:我们就像对RDD编程一样,基于DStream进行编程,原因是DStream是RDD产生的模板,在Spark Streaming发生计算前,其实质是把每个Batch的DStream的操作翻译成为了RDD操作。

1、flatMap操作:

d00ff092491e340d6618da32d46c4092.png

2、 mapToPair操作:

ebf7a1739fb221321e15dd4d8c9d1a40.png

3、reduceByKey操作:

edba6b7029c4d2ca0bf78ba7f83310a5.png

4、print等操作:

7de5a1a01d9ecbbc3513b0caad7cf650.png

温馨提示:

除了print()方法将处理后的数据输出之外,还有其他的方法也非常重要,在开发中需要重点掌握,比如SaveAsTextFile,SaveAsHadoopFile等,最为重要的是foreachRDD方法,这个方法可以将数据写入Redis,DB,DashBoard等,甚至可以随意的定义数据放在哪里,功能非常强大。

二、Scala方式开发

第一步,接收数据源:

4945a4d9196ee787e1052c7d95f4bfdf.png

第二步,flatMap操作:

25aeee41e5f1b2631beb2503967435dc.png

第三步,map操作:

a9630a3b896ea8b04eef2d39f86ede6e.png

第四步,reduce操作:

ef63fc94c4911381a491d257a4a62f85.png

第五步,print()等操作:

46ba6503d99bdb20bf706b281d6cb061.png

第六步:awaitTermination操作

fb02ded795df896a2916a6a58cc8acf6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值