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 结果一样 
  • 相关阅读:
    Insus Meta Utility
    The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
    Insus Binary Utility
    asp.net实现文件下载功能
    Column 'Column Name' does not belong to table Table
    程序已被编译为DLL,怎样去修改程序功能
    如何在Web网站实现搜索功能
    如何把数据流转换为二进制字符串
    Asp.net更新文件夹的文件
    如何显示中文月份
  • 原文地址:https://www.cnblogs.com/soyo/p/7692795.html
Copyright © 2011-2022 走看看