• [Spark]-Streaming-输出


      输出操作允许将 DStream 的数据推送到外部系统, 如数据库或文件系统. 由于输出操作实际上允许外部系统使用变换后的数据, 所以它们触发所有 DStream 变换的实际执行(类似于RDD的Action)

      Spark Streaming 定义了如下输出操作

      print() 在运行流应用程序的 driver 节点上的DStream中打印每批数据的前十个元素

      saveAsTextFiles(prefix, [suffix]) 将此 DStream 的内容另存为文本文件. 每个批处理间隔的文件名是根据 前缀 和 后缀 生成: "prefix-TIME_IN_MS[.suffix]" 

      saveAsObjectFiles(prefix, [suffix])  将此 DStream 的内容另存为序列化 Java 对象的 SequenceFiles.文件名规则同saveAsTextFiles.

      saveAsHadoopFiles(prefix, [suffix]) 将此 DStream 的内容另存为 Hadoop 文件.文件名规则同saveAsTextFiles.

      foreachRDD(func)  对从流中生成的每个 RDD 使用函数 func 的输出. 此功能应将每个 RDD 中的数据推送到外部系统,

      foreachRDD(func)详解:

        dstream.foreachRDD 是一个强大的函数,依靠foreachRDD 可以将计算结果按自定义的方式输出.如输出到RDBMS等等.

        注意:

          函数 func 在运行流应用程序的 driver 进程中执行.

             i).这代表foreachRDD 将强制流式传输 RDD 的计算

            ii).这代表foreachRDD 不能使用闭包之外的变量.因为executor不是foreachRDD 真正的执行者

            iii).这代表foreachRDD 里的执行是有一定lazy性质的.因为是传输到driver 之后,才会真正执行

            iv).默认情况下,输出执行是一次一个(one-at-a-time),将按照应用程序定义的顺序执行  

            一个将dstream保存到外部数据库的Demo   

          dstream.foreachRDD { rdd =>
            rdd.foreachPartition { partitionOfRecords =>
               val connection = createNewConnection()
               partitionOfRecords.foreach(record => connection.send(record))
               connection.close()
             }
          }
  • 相关阅读:
    ASPNET5应用程序启动
    DNX概述
    MySQL数据库管理员密码忘记如何修改?
    Rsync数据复制软件应用
    Centos7系统中Mysql数据库的安装
    基于Haproxy+Keepalived实现Haproxy的高可用
    源码编译安装Mariadb数据库的时候报错,/usr/bin/c++ doesn't support -std=c++11 or -std=c++0x, you need one that does.
    mariadb数据库的安装
    更改Ubuntu和Centos系统中的镜像源
    快速搭建ELK日志分析系统
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9292085.html
Copyright © 2020-2023  润新知