[Flink]测试用的fake温度传感器
时间:2019-11-12
本文章向大家介绍[Flink]测试用的fake温度传感器,主要包括[Flink]测试用的fake温度传感器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Flink-测试用的fake温度传感器
Flink中,测试时,会用到自定义的source。
下为一例。。 该例使用温度传感器的格式演示fake日志数据源。
代码用Scala写的。
传感器...
-
传感器 - 样例类
SensorReads.scala
:xpackage sr
/**
*
*/
case class SensorReads(id:String,
timestap:Long,
tempture:Double)
-
传感器 - 数据源模拟
SnsorSrc_4096T.scala
:xxxxxxxxxx
package sr
import org.apache.flink.streaming.api.functions.source.SourceFunction
import scala.util.Random
/**
* period, is 4096 millis.
*/
case class SnsorSrc_4096T extends SourceFunction[SensorReads] {
var isInRunning: Boolean = true
////
override def run(sourceContext: SourceFunction.SourceContext[
SensorReads]): Unit = {
val rand: Random = new Random
var tptNow4 =
(1 to 4).map(
"snsor_" + _.toString -> (23 + 16 * rand.nextGaussian))
while (isInRunning) {
tptNow4 = tptNow4.map(
t => t._1 -> (t._2 + rand.nextGaussian))
val timeStampNow: Long = System.currentTimeMillis
tptNow4.foreach{
t =>
sourceContext.collect( // O.U.T
SensorReads(t._1, timeStampNow, t._2) )
Thread.sleep(512) }
//not set, is stm
Thread.sleep(2048) }
}
override def cancel(): Unit = isInRunning = false
}
测试
SnsrSrcAappli.scala
:
xxxxxxxxxx
package applis
import org.apache.flink.streaming.api.scala._
import sr._
object SnsrSrcAappli extends App{
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.addSource(SnsorSrc_4096T() )
.print("aaa")
env.execute()
}
数据源模拟用case-class,此处使用则可以不写new。
输出
IDEA控制台上run:
xxxxxxxxxx
log4j:WARN No appenders could be found for logger (org.apache.flink.api.scala.ClosureCleaner$).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
aaa:3> SensorReads(snsor_1,1573556705508,30.383394411578916)
aaa:4> SensorReads(snsor_2,1573556705508,21.397405872448672)
aaa:5> SensorReads(snsor_3,1573556705508,20.598086139457727)
aaa:6> SensorReads(snsor_4,1573556705508,18.30066983735531)
aaa:7> SensorReads(snsor_1,1573556709627,30.120955223032546)
aaa:8> SensorReads(snsor_2,1573556709627,22.38746867201145)
aaa:1> SensorReads(snsor_3,1573556709627,20.45357507067989)
aaa:2> SensorReads(snsor_4,1573556709627,17.18467261133715)
aaa:3> SensorReads(snsor_1,1573556713729,31.686487593592904)
aaa:4> SensorReads(snsor_2,1573556713729,20.67106361911623)
aaa:5> SensorReads(snsor_3,1573556713729,21.27724215221553)
aaa:6> SensorReads(snsor_4,1573556713729,16.84273306583804)
Process finished with exit code -1
原文地址:https://www.cnblogs.com/senwren/p/fake-snsr-Rd-src.html
- 路径查找器AI
- android推荐使用dialogFrament而不是alertDialog
- 自定义圆角和园边的实现
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
- 应用潜在语义分析技术将文档进行3D可视化
- 利用神经网络算法的C#手写数字识别
- fastText、TextCNN、TextRNN…这套NLP文本分类深度学习方法库供你选择
- nfc开发
- N-CryptoAsset投资组合 | 使用PCA识别高度相关的加密货币(最近听说某币很疯狂哦!)
- 仿刮刮乐刮奖效果
- Spacebuilder在Mono上运行修改备忘
- maven配置详解
- 这一新的可视化方法教你优雅地探索相关性
- LSTM Networks在股票市场上的探究
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法