7.Spark Streaming:输入DStream之基础数据源以及基于HDFS的实时wordcount程序
来源:互联网 发布:新疆网络推广 编辑:程序博客网 时间:2024/05/16 14:16
输入DStream之基础数据源
HDFS文件
基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实时处理。相当于处理实时的文件流。
streamingContext.fileStream<KeyClass, ValueClass, InputFormatClass>(dataDirectory)streamingContext.fileStream[KeyClass, ValueClass, InputFormatClass](dataDirectory)
Spark Streaming会监视指定的HDFS目录,并且处理出现在目录中的文件。要注意的是,所有放入HDFS目录中的文件,都必须有相同的格式;必须使用移动或者重命名的方式,将文件移入目录;一旦处理之后,文件的内容即使改变,也不会再处理了;基于HDFS文件的数据源是没有Receiver的,因此不会占用一个cpu core。
java版本
package cn.spark.study.streaming;import java.util.Arrays;import org.apache.spark.SparkConf;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api.java.function.Function2;import org.apache.spark.api.java.function.PairFunction;import org.apache.spark.streaming.Durations;import org.apache.spark.streaming.api.java.JavaDStream;import org.apache.spark.streaming.api.java.JavaPairDStream;import org.apache.spark.streaming.api.java.JavaStreamingContext;import scala.Tuple2;/** * 基于HDFS文件的实时wordcount程序 * @author Administrator * */public class HDFSWordCount {public static void main(String[] args) {SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("HDFSWordCount"); JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(5));// 首先,使用JavaStreamingContext的textFileStream()方法,针对HDFS目录创建输入数据流JavaDStream<String> lines = jssc.textFileStream("hdfs://spark1:9000/wordcount_dir");// 执行wordcount操作JavaDStream<String> words = lines.flatMap(new FlatMapFunction<String, String>() {private static final long serialVersionUID = 1L;@Overridepublic Iterable<String> call(String line) throws Exception {return Arrays.asList(line.split(" "));}});JavaPairDStream<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {private static final long serialVersionUID = 1L;@Overridepublic Tuple2<String, Integer> call(String word)throws Exception {return new Tuple2<String, Integer>(word, 1);}});JavaPairDStream<String, Integer> wordCounts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {private static final long serialVersionUID = 1L;@Overridepublic Integer call(Integer v1, Integer v2) throws Exception {return v1 + v2;}});wordCounts.print();jssc.start();jssc.awaitTermination();jssc.close();}}
scala版本
package cn.spark.study.streaming import org.apache.spark.SparkConfimport org.apache.spark.streaming.StreamingContextimport org.apache.spark.streaming.Seconds /** * @author Administrator */object HDFSWordCount { def main(args: Array[String]): Unit = { val conf = new SparkConf() .setMaster("local[2]") .setAppName("HDFSWordCount") val ssc = new StreamingContext(conf, Seconds(5)) val lines = ssc.textFileStream("hdfs://spark1:9000/wordcount_dir") val words = lines.flatMap { _.split(" ") } val pairs = words.map { word => (word, 1) } val wordCounts = pairs.reduceByKey(_ + _) wordCounts.print() ssc.start() ssc.awaitTermination() } }
运行步骤:
打包,上传到linux中;编写spark-submit脚本;运行脚本;上传文件到hdfs://spark1:9000/wordcount_dir/下。
hadoop fs -put t1.txt /wordcount_dir/tt1.txt
运行结果:
阅读全文
0 0
- 7.Spark Streaming:输入DStream之基础数据源以及基于HDFS的实时wordcount程序
- Spark Streaming实现实时WordCount,DStream的使用,updateStateByKey(func)实现累计计算单词出现频率
- Spark Streaming自定义数据源-实现自定义输入DStream和接收器
- 4.Spark Streaming:实时wordcount程序开发
- 基于HDFS的实时计算和wordcount程序
- 基于HDFS的spark分布式Scala wordcount程序测试
- spark streaming 的wordcount程序,从hdfs上读取文件中的内容并计数
- 8.输入DStream之Kafka数据源实战(基于Receiver的方式)
- 9.输入DStream之Kafka数据源实战(基于Direct的方式)
- 11.updateStateByKey以及基于缓存的实时wordcount程序
- Spark Streaming之二:DStream解析
- Spark之Streaming实时监听Hdfs文件目录
- spark streaming初试之wordcount
- spark streaming programming guide 基础概念之初始化Discretized Streams(DStream)(三c)
- Spark组件之Spark Streaming学习6--如何调用Dstream里面的getOrCompute方法?
- 6.Spark Streaming:输入DStream和Receiver详解
- 基于HDFS,Spark Stream的实时统计
- spark streaming实现状态可恢复的wordcount计算程序
- 【剑指Offer_在线编程】 【牛客网22题:二叉搜索树的后序遍历序列】
- StackOverflow和OutOfMemory
- poj1416——Shredding Company
- Set集合的练习
- 02 理解Django框架下MTV模式(2)
- 7.Spark Streaming:输入DStream之基础数据源以及基于HDFS的实时wordcount程序
- 使用回调函数实现qsort(冒泡排序)
- 机器学习技法-01-1-Course Introduction
- kylin入门到实战:cube详述
- 文章标题
- 读书有感
- 第二次尝试制作html5游戏
- Android实现 制作隐藏图片效果 "幻影坦克"
- C语言基础(三)