zoukankan      html  css  js  c++  java
  • [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()
             }
          }
  • 相关阅读:
    Redis基本概念、基本使用与单机集群部署
    Storm安装部署
    HBase单机和集群版部署
    Hive基础概念、安装部署与基本使用
    Hadoop — HDFS的概念、原理及基本操作
    随机森林
    深度学习入门: CNN与LSTM(RNN)
    word修改页眉使本页的页眉与别的页不一样
    几个值得学习的Java博客
    【转】求最短路径长度--简单易懂
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9292085.html
Copyright © 2011-2022 走看看