输入DStreams和接收器 文件流

前言

输入DStream是表示从流源接收的输入数据流的DStream。在快速示例中,lines输入DStream代表从netcat服务器接收的数据流。每个输入DStream(文件流除外)都与一个Receiver对象 (Scala doc, Java doc)关联,该对象从源接收数据并将其存储在Spark的内存中以进行处理。
基本来源:可直接在StreamingContext API中获得的来源。示例:文件系统和套接字连接。

文件流

要从与HDFS API兼容的任何文件系统(即HDFS,S3,NFS等)上的文件中读取数据,可以通过创建DStream StreamingContext.fileStream[KeyClass, ValueClass, InputFormatClass]。
文件流不需要运行接收器,因此无需分配任何内核来接收文件数据。
对于简单的文本文件,最简单的方法StreamingContext.textFileStream(dataDirectory)。

示例:

Spark Streaming将监视目录dataDirectory并处理在该目录中创建的所有文件。
代码:
进入到spark-shell脚本输入:
//我们在hdfs创建user目录和dataDirectory
hadoop fs -mkdir /user
hadoop fs -mkdir /user/dataDirectory

import org.apache.spark._
import org.apache.spark.streaming._

val ssc = new StreamingContext(sc, Seconds(1))

val lines = ssc.textFileStream("/user/dataDirectory")
val words = lines.flatMap(_.split(" "))
val pairs = words.map(word => (word, 1))
val wordCounts = pairs.reduceByKey(_ + _)
wordCounts.print()
ssc.start() 
上传数据源:hadoop fs -copyFromLocal ../examples/src/main/resources/liu.txt /user/dataDirectory/liu.txt

数据源文件数据:

liuyan 18,
huanhuan 18.
meme meme meme 9.

程序运行结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值