ssc

spark streamingRDD队列流

♀尐吖头ヾ 提交于 2020-03-04 04:13:45
用streamingContext.queueStream(queueOfRDD)创建基于RDD的Dstream 每隔1s创建一个RDD,加到队列里,每隔2s对Dstream进行处理 cd 。。。。 vim RDDQueueStream.py #!/usr/bin/env python3 import time from pyspark import SparkContext from spark.streaming import StreamingContext if__name__=“ main ”: sc = SparkContext(appName=‘PythonStreamingQueueStream’) ssc =StreamingContext(sc,2) #下面创建一个RDD队列流加了5次 rddQueue = [] for i in range(5): rddQueue += [ssc.saprkContext.parallelize([j for j in range(1,1001)],10)]#10是分区,每次生成一千个元素 time.sleep(1)#每隔1s筛一个RDD队列 Input = ssc.queueStream(rddQueue) mappedStream = input.map(lamda x:(x%10,1)) reducedStream =

spark 的createDstream和createDirectStream区别

江枫思渺然 提交于 2020-02-11 02:59:44
spark读取kafka数据流提供了两种方式createDstream和createDirectStream。 两者区别如下: 1、KafkaUtils.createDstream 构造函数为KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic,partitions] ) 使用了receivers来接收数据,利用的是Kafka高层次的消费者api,对于所有的receivers接收到的数据将会保存在 Spark executors中,然后通过Spark Streaming启动job来处理这些数据,默认会丢失,可启用WAL日志,该日志存储在HDFS上 A、创建一个receiver来对kafka进行定时拉取数据,ssc的rdd分区和kafka的topic分区不是一个概念,故如果增加特定主体分区数仅仅是增加一个receiver中消费topic的线程数,并不增加spark的并行处理数据数量 B、对于不同的group和topic可以使用多个receivers创建不同的DStream C、如果启用了WAL,需要设置存储级别,即KafkaUtils.createStream(….,StorageLevel.MEMORY_AND_DISK_SER) 2.KafkaUtils.createDirectStream

常见IO模型(BIO、NIO、AIO)

点点圈 提交于 2020-02-05 00:59:00
1.网络模型 a.编程模型 TCP UDP TCP->可靠连接、使命必达、速度慢 UDP->不可靠、速度快 1.常见的IO模型 blocking IO == Old IO(BIO) 案例:如果不开线程,那么就会阻塞。 public class Server { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(); ss.bind(new InetSocketAddress("localhost", 8888)); new Thread(()->{ try { Socket s = ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(br.readLine()); br.close(); s.close(); } catch (IOException e) { e.printStackTrace(); } }); ss.close(); } } Non-Blocking IO(NIO)->Java的API还不如C 调用Linux底层的epoll(),使用一个Channel

transform - (SparkStreaming算子)

匆匆过客 提交于 2020-01-02 23:55:49
transform 一种转换算子 应用在DStream上,可以用于执行任意的RDD到RDD的转换操作。他可以用于实现,DStream API中所没有提供的操作。 package com . shsxt . spark . scala import org . apache . spark . SparkConf import org . apache . spark . streaming . { Seconds , StreamingContext } /** * Created by BF-Lone Silver Wind on 2020-01-02 */ object transform { def main ( args : Array [ String ] ) : Unit = { val conf = new SparkConf ( ) . setMaster ( "local[2]" ) . setAppName ( "Tranform" ) val ssc = new StreamingContext ( conf , Seconds ( 5 ) ) val fileDS = ssc . socketTextStream ( "192.168.241.211" , 9999 ) val wordcountDS = fileDS . flatMap { line =

Spark Streaming学习笔记

巧了我就是萌 提交于 2019-12-24 15:27:02
Spark Streaming 编程学习笔记 简介 spark stream 基于spark 核心API扩展而来,提供了一种具有规模可伸缩、高吞吐、错误恢复的处理实时数据流的流式处理方法。数据来源可以从本地文件,hadoop等接受,可以使用该机函数类似map、reduce、window等函数进行处理。数据结果同样可以进行多种形式的存储。 在spark stream内部,将接收到的实时数据进行切分成不同的数据段,然后处理引擎对一个个的数据快进行处理然后输出相应的结果。 这个地方有点疑问:如果原始数据被切分开,比如说,原始数据是“Hello, my boys", 但是在spark数据接收端对数据块进行切分时,从中间切分开来使"Hello"和", my boys"成为了两个数据块,这内部怎么保证切分永远是合理的?? 上面的流程图中的batches,spark将其抽象成一种数据结构叫做 DStream(discretized stream) ,Dstream既可以有输入的实时数据流创建,也可以由其他的函数对已有的DStream操作后得到。DStream在spark内部就是一系列的RDD的集合。 一个简单的例子 以下的例子是一个简单的wordCount的程序,改程序从TCP端口接收数据,然后统计接受到数据的文字的个数。 import org.apache.spark._ import org

kafka+pyspark

匿名 (未验证) 提交于 2019-12-03 00:12:02
安装kafka kafka 三部分 server producer consumer pyspark 监控 一、环境部署 1.导入对应版本的spark-streaming-kafka-*-*.jar 2.相应jar追加到SPARK_DIST_CLASSPATH 二、kafka+spark测试 1.启动kafka的server和producer 2.代码 from pyspark.streaming.kafka import KafkaUtils if __name__ == "__main__": if len(sys.argv) != 3: print("Usage: kafka_wordcount.py <zk> <topic>", file=sys.stderr) exit(-1) sc = SparkContext(appName="PythonStreamingKafkaWordCount") ssc = StreamingContext(sc, 1) zkQuorum, topic = sys.argv[1:] kvs = KafkaUtils.createStream(ssc, zkQuorum, "spark-streaming-consumer", {topic: 1}) lines = kvs.map(lambda x: x[1]) counts = lines

Spark Dstream

匿名 (未验证) 提交于 2019-12-02 23:47:01
第 2 章 Dstream 入门 Spark Streaming的入口 StreamingContext val conf = new SparkConf().setAppName(appName).setMaster(master) val ssc = new StreamingContext(conf, Seconds(1)) // 可以通过ssc.sparkContext 来访问SparkContext // 或者通过已经存在的SparkContext来创建StreamingContext val sc = ... val ssc = new StreamingContext(sc, Seconds(1)) 初始化完Context之后: 1)定义消息输入源来创建DStreams. 2)定义DStreams的转化操作和输出操作。 3)通过 streamingContext.start()来启动消息采集和处理. 4)等待程序终止,可以通过   streamingContext.awaitTermination()来设置 5)通过streamingContext.stop()来手动终止处理程序。 2.1 WordCount 案例实操 1.需求:使用 netcat 工具向 9999 端口不断的发送数据,通过 SparkStreaming 读取端口数据并统 计不同单词出现的次数 2

Tomcat 后台war部署上传shell

一世执手 提交于 2019-12-01 02:04:50
tomcat的后台登录的两个目录为: /admin /manager/html 如果版本过高,只有采用弱密码的方式进后台; 有些tomcat采用默认的用户名和密码(用户名:admin,密码:空); 或者我经常遇到的用户名:tomcat,密码:123456或者各种弱密码 如果成功进入,然后: /admin 目录下的利用: Service--host--actions--Create New Context建立虚拟目录Document Base填你想浏览的目录,比如c:\,Path自己随便写,例如/guizai 然后直接http://ip/guizai 就可以看到c盘内容。 /manager/html 目录下的利用: 在war部署文件上传这里 上传一个马的war文件就可以了,这里比如说你有一个shell.jsp木马,先用压缩软件进行压缩,比如说压缩成了ssc.zip,然后将zip后缀改为war即可。 然后就变成ssc.war文件,上传,发现上传部署成功。 接下来我们先访问http://ip/ssc和http://ip/ssc/shell.jsp即可 发现成功访问,然后我们用冰蝎连接: 成功连接,发现还是root权限.。 随即我就把马删掉了,由于这只是一个测试。 来源: https://www.cnblogs.com/-chenxs/p/11647246.html

[Spark streaming举例]-- 统计一段时间内的热搜词

这一生的挚爱 提交于 2019-11-30 18:06:25
如下 package com.my.scala import org.apache.spark.SparkConf import org.apache.spark.streaming.{Durations, StreamingContext} /** * * 使用开窗函数实现spark streaming,版本统计一段时间内前三的热搜词汇 * * 测试结果:测试成功 * 步骤: 先开启hadoop集群,start-all.sh * 再在h15上启动端口:nc -lk 8888 * 再输入数据:如---》"ds sdf sdfa wfasd sdf",一定要以空格分开 * 启动本程序 * 查看控制台是否正常 * */ object WindowBasedTopWord { def main(args: Array[String]) { val conf = new SparkConf().setAppName("WindowBasedTopWord").setMaster("local[2]") val ssc = new StreamingContext(conf,Durations.seconds(5)) //这里的5秒是指切分RDD的间隔 ssc.checkpoint("hdfs://h15:8020/wordcount_checkpoint") /

SparkStreaming之checkpoint检查点

人走茶凉 提交于 2019-11-27 10:14:04
一.简介   流应用程序必须保证7*24全天候运行,因此必须能够适应与程序逻辑无关的故障【例如:系统故障、JVM崩溃等】。为了实现这一点,SparkStreaming需要将足够的信息保存到容错存储系统中,以便它可以从故障中恢复。   检查点有两种类型。     1.元数据检查点       将定义流式计算的信息保存到容错存储系统【如HDFS等】。这用于从运行流应用程序所在的节点的故障中恢复。       元数据包括:         1.配置           用于创建流应用程序的配置。         2.DStream操作           定义流应用程序的DStream操作集。         3.不完整的批次           在任务队列中而尚未完成的批次。     2.数据检查点       将生成的RDD保存到可靠的存储系统。在一些跨多个批次组合数据的有状态转换中,这是必须的。在这种转换中,生成的RDD依赖于先前批次的RDD,这导致依赖关系链的长度随着时间而增加。为了避免恢复时间的这种无限增加【与依赖链成正比】,有状态变换的中间RDD周期性地检查以存储到可靠的存储系统中,以切断依赖链。   总而言之,元数据检查点主要用于从节点故障中恢复,而如果使用状态转换,即使对于基本功能也需要数据或RDD检查点。 二.需要设置检查点的情况   1.有状态转换的使用