功能:接收来自kafka的数据,数据是一篇文章,来判断文章的类型,把判断的结果一并保存到Hbase,并把文章建立索引(没有代码只有一个空壳,可以自己实现,以后有机会了可能会补上)

import org.apache.spark.ml.PipelineModel
import org.apache.spark.ml.feature.{HashingTF, IDF, LabeledPoint, Tokenizer}
import org.apache.spark.ml.linalg.{Vector, Vectors}
import org.apache.spark.SparkConf
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.streaming.api.java.JavaPairReceiverInputDStream
import org.apache.spark.SparkConf
import org.apache.spark.streaming.api.java.JavaPairReceiverInputDStream.fromReceiverInputDStream
import org.apache.spark.rdd.RDD
import org.apache.spark.ml.classification.NaiveBayesModel
import org.omg.CORBA_2_3.portable.OutputStream
import java.io.FileOutputStream class UseModel1 { }
object UseModel1{
//流程代码
def main(args: Array[String]): Unit = {
val Array(zkQuorum, group, topics, numThreads) =Array("192.168.10.199:2181","order","order","");
val conf = new SparkConf().setAppName("useModel").setMaster("local[4]");
val ssc = getStreamingContext(conf, );
val dstreams = getKafkaDstream(ssc, topics, zkQuorum, group, numThreads);
val dstream = dstreams.inputDStream.map(_._2);
dstream.persist()
//测试
dstream.print()
//如果能判断不为空就更好了
dstream.foreachRDD(rdd =>everyRDD(rdd))
ssc.start()
ssc.awaitTermination()
} //得到StreamingContext
def getStreamingContext(conf:SparkConf,secend:Int):StreamingContext = {
return new StreamingContext(conf, Seconds(secend))
} //得到sparkSession
def getSparkSession(conf:SparkConf): SparkSession = {
val spark = SparkSession.builder()
.config(conf)
.config("spark.sql.warehouse.dir", "warehouse/dir")
.getOrCreate()
return spark;
} //得到kafkaDStream
def getKafkaDstream(ssc:StreamingContext,topics:String,zkQuorum:String,group:String,numThreads:String):JavaPairReceiverInputDStream[String,String] ={
ssc.checkpoint("directory")
val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap;
val stream = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap)
return stream;
} //文件保存测试
def savaString(str:String):Unit={
val out = new FileOutputStream("D:\\decstop\\file.txt",true);
out.write(str.getBytes)
out.flush()
out.close()
} //每一个rdd做动作
def everyRDD(rdd:RDD[String]){
val sameModel = NaiveBayesModel.load("resoult") val spark = getSparkSession(rdd.context.getConf)
import spark.implicits._
val rddDF = rdd.map { line => (,line) }.toDF("label","text").persist()
//rddDF.show()
val tokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")
val tokenizerRDD = tokenizer.transform(rddDF)
//tokenizerRDD.show(false) val hashingTF =
new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures()
val hashingTFRDD = hashingTF.transform(tokenizerRDD) val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
val idfModel = idf.fit(hashingTFRDD)
val rescaledData = idfModel.transform(hashingTFRDD)
//rescaledData.show(false)
//转化为贝叶斯需要的格式
val useDataRdd = rescaledData.select($"label", $"features").map{
case Row(label:Int , features:Vector) =>
LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
}
val predictions = sameModel.transform(useDataRdd)
predictions.persist()
//predictions.show(false)
//参照下面可以实现各种的逻辑,可以把下面的保存,建索引都加上
predictions.select($"label",$"prediction").foreach { x => savaString((""+x.getAs("label")+" "+x.getAs("prediction")+"\n\r")) } //测试
predictions.createOrReplaceTempView("prediction")
rddDF.createOrReplaceTempView("atical") //spark.sql("select p.label,p.prediction,a.text from prediction p,atical a where p.label=a.label").select(col, cols) } //简历索引 主要的建立索引的有hbase_rowKay(time) aothor title article
def buiderIndex(){} //保存到hbase
def savaToHbase(){ } //发送到下一个kafka 发送的数据 time 正舆情数量 负面舆情数量 百分比 是否报警 def sendToKafka(){ }
}

代码实现:

Spark Streaming里面使用文本分析模型的更多相关文章

  1. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  2. Spark入门实战系列--7.Spark Streaming(下)--实时流计算Spark Streaming实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .实例演示 1.1 流数据模拟器 1.1.1 流数据说明 在实例演示中模拟实际情况,需要源源 ...

  3. Spark Streaming官方文档学习--上

    官方文档地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html Spark Streaming是spark ap ...

  4. Spark Streaming 入门指南

    这篇博客帮你开始使用Apache Spark Streaming和HBase.Spark Streaming是核心Spark API的一个扩展,它能够处理连续数据流. Spark Streaming是 ...

  5. 9.Spark Streaming

    Spark Streaming 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹性 ...

  6. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...

  7. Spark Streaming编程指南

    Overview A Quick Example Basic Concepts Linking Initializing StreamingContext Discretized Streams (D ...

  8. Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

    本文由  网易云发布. 1.Flink架构及特性分析 Flink是个相当早的项目,开始于2008年,但只在最近才得到注意.Flink是原生的流处理系统,提供high level的API.Flink也提 ...

  9. Spark Streaming入门

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文将帮助您使用基于HBase的Apache Spark Streaming.Spark Streaming是Spark API核心的一个扩 ...

随机推荐

  1. HTML之DocType的几种类型

    一.什么是DOCTYPE DOCTYPE是Document Type(文档类型)的简写,在页面中,用来指定页面所使用的XHTML(或者HTML)的版本.要想制作符合标准的页面,一个必不可少的关键组成部 ...

  2. oracle如何将am,pm时间字符串改为时间格式

    问题: 解决办法: 1.param["OPT_DATE"] = DateTime.Parse(dt.Rows[0]["CREATED_ON"].ToString ...

  3. HDOJ 4276 The Ghost Blows Light

    题意 1. 给定一棵树, 树上节点有 value, 节点之间 travel 有 cost. 给定起始节点和最大 cost, 求解最大 value 思路 1. 寻找最短路径 a. 题目描述中有两句话, ...

  4. shell基础篇(九)函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用1. Shell 函数的定义格式如下: ...

  5. 查看磁盘读写:iotop

    iotop命令用来动态地查看磁盘IO情况,用法如下: [root@localhost ~]$ yum install -y iotop # 安装iotop命令 [root@localhost ~]$ ...

  6. 第十一篇:基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

    执行分析 1. 打开服务器进程: 2. 执行netstat -a命令观察当前的连接状态: 第1条连接记录说明:绑定了本地主机的任意IP,端口为9877,目前处于监听状态. 3. 打开客户进程: 4. ...

  7. stl中的map经验

    如果想使用一个map临时变量装载参数map,不需要使用new创建一个对象. 声明一个变量,直接赋值就可以.map内部自己重载了=操作符,会自己分配内存.

  8. 图片上传Security Error

    jQuery.Uploadify v3.2.js 现在得到的一个原因是跨域 http://www.xuebuyuan.com/848255.html 最近项目中要用文件上传控件,我就想到了Upload ...

  9. 让你变成ASP木马高手

    .名称:如何制作图片ASP木马 (可显示图片) 建一个asp文件,内容为<!--#i nclude file="ating.jpg"--> 找一个正常图片ating.j ...

  10. 【Android N 7】使用量统计usagestats

    Android N 7.1.1 高通 1. /data/system/usagestats/0 2. 每天使用量统计 /data/system/usagestats/0/daily 查看数值: cat ...