前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark学习之Spark Streaming(9)

Spark学习之Spark Streaming(9)

作者头像
王小雷
发布2018-01-02 14:32:44
9870
发布2018-01-02 14:32:44
举报
文章被收录于专栏:王小雷

Spark学习之Spark Streaming(9)

1. Spark Streaming允许用户使用一套和批处理非常接近的API来编写流式计算应用,这就可以大量重用批处理应用的技术甚至代码。

2. Spark Streaming使用离散化(discretized steam)作为抽象表示,叫做DStream。DStream是随时间推移而收到的数据的序列。

3. DSteam支持两种操作:转换操作(transformation),会生成一个新的DStream;另一种是输出操作(output operation),可以把数据写入到外部系统中。

4. Spark Stream的简单例子

需求:使用maven或者sbt打包编译出来独立应用的形式运行。从一台服务器的7777端口接受一个以换行符分隔的多行文本,要从中筛选出包含单词error的行,并打印出来。

代码语言:javascript
复制
    //Maven 索引
    groupID = org.apache.spark
    artifactID = spark-steaming_2.10
    version = 1.2.0
代码语言:javascript
复制
    //Scala流计算import声明
    import org.apache.spark.streaming.StreamingContext
    import org.apache.spark.streaming.StreamingContext._
    import org.apache.spark.streaming.dstream.DStream
    import org.apache.spark.streaming.Duration
    import org.apache.spark.streaming.Seconds
    //用Scala进行流式筛选,打印包含“error”的行
        //从SparkConf创建StreamingContext并指定1秒钟的处理
    val ssc = new SteamingContext(conf,Seconds(1))
        //连接到本地机器7777端口上后,使用收到的数据创建DStream
    val lines = ssc.socketTextStream("localhost",7777)
        //从DStream中筛选出包含字符串“error”的行
    val errorLines = lines.filter(_.contains("error"))
        //  打印拥有“error”的行
    errorLines.print()
    //用Scala进行流式筛选,打印出包含“error”的行
    ssc.start()
    //等待作业完成
    ssc.awaitTermination()
代码语言:javascript
复制
注意:一个Streaming context只能执行一次,所以只有在配置好所有DStream以及所需要的输出操作之后才启动。

最后:在Linux/Mac操作系统上运行流计算应用并提供数据
代码语言:javascript
复制
    $spark-submit --class com.oreilly.learningsparkexamples.scala.streamingLogInput \
    $ASSEMBLY_JAR local[4]

    $ nc localhost 7777 # 使你可以键入输入的行来发送给服务器 
代码语言:javascript
复制
Windows nc命令对应ncat

5. DStream 的转化操作可以分为两种:无状态(stateless)转化操作和有状态(stateful)转化操作。

代码语言:javascript
复制
5.1无状态转化操作中,每个批次的处理不依赖于之前批次的数据。
例如map()、filter()、reduceByKey()等。
5.2有状态转化操作中,需要使用之前批次的数据或者中间结果来计算当前批次的数据。
有状态转化操作包括基于滑动窗口的转化操作和追踪状态变化的转化操作。

6. 输出操作

输出操作指定了对数据经转化操作得到的数据所要执行的操作(例如把结果输出推入外部数据库或输出到屏幕上)。

7. 输入源包括:核心数据源、附加数据源、多数据源与集群规模。

8. Steaming用户界面http://localhost:4040可以查看运行详细信息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spark学习之Spark Streaming(9)
    • 1. Spark Streaming允许用户使用一套和批处理非常接近的API来编写流式计算应用,这就可以大量重用批处理应用的技术甚至代码。
      • 2. Spark Streaming使用离散化(discretized steam)作为抽象表示,叫做DStream。DStream是随时间推移而收到的数据的序列。
        • 3. DSteam支持两种操作:转换操作(transformation),会生成一个新的DStream;另一种是输出操作(output operation),可以把数据写入到外部系统中。
          • 4. Spark Stream的简单例子
            • 5. DStream 的转化操作可以分为两种:无状态(stateless)转化操作和有状态(stateful)转化操作。
              • 6. 输出操作
                • 7. 输入源包括:核心数据源、附加数据源、多数据源与集群规模。
                  • 8. Steaming用户界面http://localhost:4040可以查看运行详细信息。
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档