sparkstreaming监听hdfs目录_Spark Streaming编程实战

本文详细介绍了如何使用Spark Streaming监听HDFS目录进行数据处理,包括流数据模拟器的创建、读取文件、网络数据处理、状态操作和窗口操作等实例,帮助理解Spark Streaming的核心概念。
摘要由CSDN通过智能技术生成

文章来源:加米谷大数据

本文介绍如何编写 Spark Streaming 应用程序,由简到难讲解使用几个核心概念来解决实际应用问题。

流数据模拟器

在实例演示中模拟实际情况,需要源源不断地接入流数据,为了在演示过程中更接近真实环境,首先需要定义流数据模拟器。该模拟器的主要功能是通过 Socket 方式监听指定的端口号,当外部程序通过该端口进行连接并请求数据时,模拟器将定时将指定的文件数据进行随机获取,并发送给外部程序。
流数据模拟器的代码如下。

import java.io.{PrintWriter}import java.net.ServerSocketimport scala.io.Sourceobject StreamingSimulation {    //定义随机获取整数的方法    def index(length:Int) = {        import java.util.Random        val rdm = new Random        rdm.nextInt(length)    }    def main(args: Array[String]) {        //调用该模拟器需要 3 个参数,分别为文件路径、端口号和间隔时间(单位为毫秒)        if (args.length != 3) {            System.err.printIn("Usage:")            System.exit(1)        }        //获取指定文件总的行数        val filename = args(0)        val lines = Source.fromFile(filename).getLines.toList        val filerow = lines.length        //指定监听某端口,当外部程序请求时建立连接        val listener = new ServerSocket(args(1).toInt)        while (true) {            val socket = listener.accept()            new Thread() {                override def run = {                    printIn("Got client connected from: " + socket.getInetAddress)                    val out = new PrintWriter(socket.getOutputStream(), true)                    while (true) {                        Thread.sleep(args(2).toLong)                        //当该端口接受请求时,随机获取某行数据发送给对方                        val content = lines(index(filerow))                        printIn(content)                        out.write(content + '') out.flush()                    }                    socket.close()                }            }.start()        }    }}

在 IDEA 开发环境打包配置界面中:

  • 首先需要在 ClassPath 加入 Jar 包(/app/scala-2.10.4/lib/scala—swing.jar/app/scala—2.10.4/lib/scala—library.jar/app/scala—2.10.4/lib/scala—actors.jar)。
  • 然后单击“Build”→“Build Artifacts”,选择“Build”或者“Rebuild”动作。
  • 最后使用以下命令复制打包文件到 Spark 根目录下。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值