wordpress 适合做小说站吗,网站建设公司大型,陕西做网站的公司在哪,百度seo建议是什么
Spark Streaming是一个可扩展、高吞吐、具有容错性的流式计算框架。 之前我们接触的spark-core和spark-sql都是离线批处理任务#xff0c;每天定时处理数据#xff0c;对于数据的实时性要求不高#xff0c;一般都是T1的。但在企业任务中存在很多的实时性的任务需求每天定时处理数据对于数据的实时性要求不高一般都是T1的。但在企业任务中存在很多的实时性的任务需求列如双十一的京东阿里都会要求做一个实时的数据大屏显示实时订单。 实时计算框架对比
框架类别框架类型数据单位其他吞吐量延迟Storm流式计算框架record的处理数据单位支持micro-batch方式一般更低Spark批处理计算框架RDD处理数据单位支持micro-batch流式处理数据更强一般
Spark Streaming组件
Streaming Context 一个Context启动则不能有新的DStream建立或者添加一个Context停止不能重新启动在JVM中只能有一个Streaming Context活跃一个Spark Context会创建一个Streaming ContextStreaming Context上调用stop方法SparkContext也会关闭如果只想关闭Streaming Context可以设置stop()方法里的false参数一个SparkContext对象可以重复创建多个Streaming Context对象但每次只能运行一个即需要关闭一个再开下一个。 DStream 表示一个连续的数据流DStream内部是由一系列的RDD组成DStream中的每个RDD都有确定时间间隔内的数据对DStream的操作都转换成对DStream隐含的RDD操作数据源
数据源类型基本源TCP/IP or FileSystem高级源Kafka or Flume
Spark Streaming编码步骤
import os
# 配置spark driver和pyspark运⾏时所使⽤的python解释器路径
PYSPARK_PYTHON /miniconda2/envs/py365/bin/python
JAVA_HOME/root/bigdata/jdk
SPARK_HOME /root/bigdata/spark
# 当存在多个版本时不指定很可能会导致出错
os.environ[PYSPARK_PYTHON] PYSPARK_PYTHON
os.environ[PYSPARK_DRIVER_PYTHON] PYSPARK_PYTHON
os.environ[JAVA_HOME]JAVA_HOME
os.environ[SPARK_HOME] SPARK_HOME
from pyspark import SparkContext
from pyspark.streaming import StreamingContextif __name__ __main__:sc SparkContext(local[2],appNameNetworkWordCount)#参数2指定执⾏计算的时间间隔ssc StreamingContext(sc, 1)#监听ip端⼝上的上的数据lines ssc.socketTextStream(localhost,9999)#将数据按空格进⾏拆分为多个单词words lines.flatMap(lambda line: line.split( ))#将单词转换为(单词1)的形式pairs words.map(lambda word:(word,1))#统计单词个数wordCounts pairs.reduceByKey(lambda x,y:xy)#打印结果信息会使得前⾯的transformation操作执⾏wordCounts.pprint()#启动StreamingContextssc.start()#等待计算结束ssc.awaitTermination()Spark Streaming状态操作
Spark Streaming存在两种状态操作UpdateStateByKey和Window操作。
updateStateByKey 如果没有updateStateByKey我们需要将每一秒的数据计算好放入mysql中再用mysql进行计算而updateStateByKey将每隔一段数据进行打包封装成RDD这样每个时间片段的数据之间是没有关联的。一般为以下步骤
⾸先要定义⼀个state可以是任意的数据类型其次要定义state更新函数–指定⼀个函数如何使⽤之前的state和新值来更新state对于每个batchSpark都会为每个之前已经存在的key去应⽤⼀次state更新函数⽆论这个key在batch中是否有新的数据。如果state更新函数返回none那么key对应的state就会被删除对于每个新出现的key也会执⾏state更新函数
Window Window操作是基于窗⼝⻓度和滑动间隔来⼯作的窗⼝的⻓度控制考虑前⼏批次数据量默认为批处理的滑动间隔来确定计算结果的频率。 窗口长度L是运算的数据量 滑动间隔G是控制每隔多长时间做一次运算。