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

一、Java方式开发

1、开发前准备:假定您以搭建好了Spark集群。

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

21c07e3f88140259cd3bc0a5e219834e.gif

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

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

温馨提示:

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

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

第一步:创建SparkConf对象

2b492cf8871cec93bfba936e613346e3.gif

第二步:创建SparkStreamingContext

1f7ba6ba5a007f1521a9db11e23d837b.gif

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

320a8d80afd35b7ce879a943b4bf3efb.gif

b7f5fef57a40b020b0f677be74a58b5d.gif

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

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

1c5b2a0966105f7ff01a9b1bc6dc6599.gif

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

1、flatMap操作:

6747b4271526bc9f8370a9f17e8e9479.gif

2、 mapToPair操作:

fada3b8e12dbdfb237256d9c3bee2024.gif

3、reduceByKey操作:

e43dc6ef637447e29bdf51c07b924074.gif

4、print等操作:

45b49635e877080b37827ea2ba99855b.gif

温馨提示:

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

一、Scala方式开发

第一步,接收数据源:

119b2b9fdfdb2a553f4d78aac8791a12.gif

第二步,flatMap操作:

c4d36f523b5cf9c6d1da2a5200e854b5.gif

第三步,map操作:

786f4b7791bfd7947271c6b1e436c3e0.gif

第四步,reduce操作:

0847ef7a09f24e5c9705718084521a49.gif

第五步,print()等操作:

d4378066971117012f17949a7f707f13.gif

第六步:awaitTermination操作

b7d0f8d3d1cf74297e3745a2554fe404.gif

总结:

备注:83课

更多私密内容,请关注微信公众号:DT_Spark

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值