zoukankan      html  css  js  c++  java
  • DStream 转换操作----无状态转换

    DStream转换操作包括无状态转换和有状态转换。
    无状态转换:每个批次的处理不依赖于之前批次的数据。
    有状态转换:当前批次的处理需要使用之前批次的数据或者中间结果。有状态转换包括基于滑动窗口的转换和追踪状态变化的转换(updateStateByKey)。

    DStream无状态转换操作包括:

    map(func) :对源DStream的每个元素,采用func函数进行转换,得到一个新的DStream;
    * flatMap(func): 与map相似,但是每个输入项可用被映射为0个或者多个输出项;
    * filter(func): 返回一个新的DStream,仅包含源DStream中满足函数func的项;
    * repartition(numPartitions): 通过创建更多或者更少的分区改变DStream的并行程度;
    * union(otherStream): 返回一个新的DStream,包含源DStream和其他DStream的元素;
    * count():统计源DStream中每个RDD的元素数量;
    * reduce(func):利用函数func聚集源DStream中每个RDD的元素,返回一个包含单元素RDDs的新DStream;
    * countByValue():应用于元素类型为K的DStream上,返回一个(K,V)键值对类型的新DStream,每个键的值是在原DStream的每个RDD中的出现次数;
    * reduceByKey(func, [numTasks]):当在一个由(K,V)键值对组成的DStream上执行该操作时,返回一个新的由(K,V)键值对组成的DStream,每一个key的值均由给定的recuce函数(func)聚集起来;
    * join(otherStream, [numTasks]):当应用于两个DStream(一个包含(K,V)键值对,一个包含(K,W)键值对),返回一个包含(K, (V, W))键值对的新DStream;
    * cogroup(otherStream, [numTasks]):当应用于两个DStream(一个包含(K,V)键值对,一个包含(K,W)键值对),返回一个包含(K, Seq[V], Seq[W])的元组;
    * transform(func):通过对源DStream的每个RDD应用RDD-to-RDD函数,创建一个新的DStream。支持在新的DStream中做任何RDD操作。

    注意:

    1. 想要使用countByValue ,reduceByKey等 需要使用 flatMap 如果用map处理数据:报如下的错误

    Exception in thread "main" org.apache.spark.SparkException: Cannot use map-side combining with array keys.
    flatMap:主要用于spark Streaming
    map:到处用
    区别:
    以读文件例子:map会为每一行返回一个对象,但flatMap会汇总每行返回的对象成为一个更大的对象(map-side的错误也能看得出)
    2.
    val sc=new SparkContext(conf)
    
    val lines2=sc.textFile("file:///**/1.txt")
    2.1 lines2.flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey(_+_)
    
    2.2 lines2.flatMap(lines=>lines.split(" ")).countByValue()
    
                  2.1和2.2 结果一样 
  • 相关阅读:
    vue-router 中 router-link 与 a 标签的区别
    html select标签 点击选中事件
    ie11卸载不了怎么办
    eclipse导入web项目及Tomcat 部署
    oracle "记录被另一个用户锁定"
    前端jinput:[DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq)
    vue 前端报:TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': Value is not a valid ByteString.
    windows 环境下微信js支付 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
    JavaSE第25篇:枚举、XML
    JavaSE第23篇:网络编程
  • 原文地址:https://www.cnblogs.com/soyo/p/7692795.html
Copyright © 2011-2022 走看看