spark streaming 中对DStream 的两个操作

在spark streaming中Dstream (一种streaming type RDDs),有两种操作transformations 和 output:

transformations  operations:

  • map(func)                        对每一个元素执行func方法
  • flatMap(func)                    类似map函数,但是可以map到0+个输出
  • filter(func)                         过滤
  • repartition(numPartitions)       增加分区,提高并行度     
  • union(otherStream)               合并两个流
  • count()                    统计元素的个数
  • reduce(func)                     对RDDs里面的元素进行聚合操作,2个输入参数,1个输出参数
  • countByValue()                   针对类型统计,当一个Dstream的元素的类型是K的时候,调用它会返回一个新的Dstream,包含键值对,Long是每个K出现的频率。
  • reduceByKey(func, [numTasks])    对于一个(K, V)类型的Dstream,为每个key,执行func函数,默认是local是2个线程,cluster是8个线程,也可以指定numTasks 
  • join(otherStream, [numTasks])    把(K, V)和(K, W)的Dstream连接成一个(K, (V, W))的新Dstream 
  • cogroup(otherStream, [numTasks]) 把(K, V)和(K, W)的Dstream连接成一个(K, Seq[V], Seq[W])的新Dstream 
  • transform(func)                  转换操作,把原来的RDD通过func转换成一个新的RDD
  • updateStateByKey(func)           针对key使用func来更新状态和值,可以将state该为任何值

例如下面是计算word count 的一个片段:
    counts = lines.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
    counts.pprint()


out operations:
  • print()                                 打印到控制台
  • foreachRDD(func)                        对Dstream里面的每个RDD执行func,保存到外部系统
  • saveAsObjectFiles(prefix, [suffix])     保存流的内容为SequenceFile, 文件名 : "prefix-TIME_IN_MS[.suffix]".
  • saveAsTextFiles(prefix, [suffix])       保存流的内容为文本文件, 文件名 : "prefix-TIME_IN_MS[.suffix]".
  • saveAsHadoopFiles(prefix, [suffix])     保存流的内容为hadoop文件, 文件名 : "prefix-TIME_IN_MS[.suffix]".



你可能感兴趣的:(spark)