Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 在apache spark中以编程方式创建数据流_Testing_Apache Spark_Dstream - Fatal编程技术网

Testing 在apache spark中以编程方式创建数据流

Testing 在apache spark中以编程方式创建数据流,testing,apache-spark,dstream,Testing,Apache Spark,Dstream,我正在围绕ApacheSpark流编写一些自包含的集成测试。 我想测试我的代码是否能够在模拟测试数据中吸收各种边缘情况。 当我使用常规RDD(非流媒体)进行此操作时。我可以使用内联数据并对其调用“并行化”,将其转换为spark RDD。 但是,我找不到创建destream的方法。理想情况下,我希望偶尔调用一些“push”函数,让元组神奇地出现在我的数据流中。 ATM我使用ApacheKafka来实现这一点:我创建一个临时队列,然后向它写入数据。但这似乎有点过分了。我更愿意直接从测试数据创建测试数

我正在围绕ApacheSpark流编写一些自包含的集成测试。 我想测试我的代码是否能够在模拟测试数据中吸收各种边缘情况。 当我使用常规RDD(非流媒体)进行此操作时。我可以使用内联数据并对其调用“并行化”,将其转换为spark RDD。 但是,我找不到创建destream的方法。理想情况下,我希望偶尔调用一些“push”函数,让元组神奇地出现在我的数据流中。 ATM我使用ApacheKafka来实现这一点:我创建一个临时队列,然后向它写入数据。但这似乎有点过分了。我更愿意直接从测试数据创建测试数据流,而不必使用Kafka作为中介

我发现了这个基本示例:

这里的关键是调用“store”命令。将存储区的内容替换为您想要的任何内容。

我发现了以下基本示例:


这里的关键是调用“store”命令。用您想要的任何内容替换存储区的内容。

出于测试目的,您可以从RDD队列中创建输入流。 在队列中推送更多RDD将模拟在批处理间隔中处理了更多事件

val sc=SparkContextHolder.sc
val ssc=新的StreamingContext(sc,秒(1))
val inputData:mutable.Queue[RDD[Int]]=mutable.Queue()
val inputStream:InputDStream[Int]=ssc.queueStream(inputData)
inputData+=sc.makeRDD(列表(1,2))//模拟在第一批处理间隔期间创建的RDD
inputData+=sc.makeRDD(列表(3,4))//第二批间隔
//等
val result=inputStream.map(x=>x*x)
result.foreachRDD(rdd=>assertSomething(rdd))
ssc.start()//不要忘记启动流上下文

出于测试目的,您可以从RDD队列中创建输入流。 在队列中推送更多RDD将模拟在批处理间隔中处理了更多事件

val sc=SparkContextHolder.sc
val ssc=新的StreamingContext(sc,秒(1))
val inputData:mutable.Queue[RDD[Int]]=mutable.Queue()
val inputStream:InputDStream[Int]=ssc.queueStream(inputData)
inputData+=sc.makeRDD(列表(1,2))//模拟在第一批处理间隔期间创建的RDD
inputData+=sc.makeRDD(列表(3,4))//第二批间隔
//等
val result=inputStream.map(x=>x*x)
result.foreachRDD(rdd=>assertSomething(rdd))
ssc.start()//不要忘记启动流上下文

除了拉斐尔解决方案之外,我认为您还喜欢一次处理一批或所有可用的方法。您需要在queustream的可选方法参数上相应地设置oneAtATime标志,如下所示:

val slideDuration = Milliseconds(100)
val conf = new SparkConf().setAppName("NetworkWordCount").setMaster("local[8]")
val sparkSession: SparkSession = SparkSession.builder.config(conf).getOrCreate()
val sparkContext: SparkContext = sparkSession.sparkContext
val queueOfRDDs = mutable.Queue[RDD[String]]()


val streamingContext: StreamingContext = new StreamingContext(sparkContext, slideDuration)
val rddOneQueuesAtATimeDS: DStream[String] = streamingContext.queueStream(queueOfRDDs, oneAtATime = true)
val rddFloodOfQueuesDS: DStream[String] = streamingContext.queueStream(queueOfRDDs, oneAtATime = false)

rddOneQueuesAtATimeDS.print(120)
rddFloodOfQueuesDS.print(120)

streamingContext.start()


for (i <- (1 to 10)) {
  queueOfRDDs += sparkContext.makeRDD(simplePurchase(i))
  queueOfRDDs += sparkContext.makeRDD(simplePurchase((i + 3) * (i + 3)))
  Thread.sleep(slideDuration.milliseconds)
}

Thread.sleep(1000L)
val slideDuration=毫秒(100)
val conf=new SparkConf().setAppName(“NetworkWordCount”).setMaster(“local[8]”)
val sparkSession:sparkSession=sparkSession.builder.config(conf.getOrCreate())
val sparkContext:sparkContext=sparkSession.sparkContext
val queueofrds=mutable.Queue[RDD[String]]()
val streamingContext:streamingContext=新streamingContext(sparkContext,slideDuration)
val rddonequeuestatimeds:DStream[String]=streamingContext.queueStream(queueofrds,oneAtATime=true)
val rddfloodofqueesds:DStream[String]=streamingContext.queueStream(queueOfRDDs,oneAtATime=false)
RDDONEQUEUESATIMEDS.打印(120)
RDDFloodoFQUESDS.打印(120)
streamingContext.start()

对于(i除了Raphael解决方案之外,我认为您还可以一次处理一批或所有可用的方法。您需要在queustream的可选方法参数上相应地设置oneAtATime标志,如下所示:

val slideDuration = Milliseconds(100)
val conf = new SparkConf().setAppName("NetworkWordCount").setMaster("local[8]")
val sparkSession: SparkSession = SparkSession.builder.config(conf).getOrCreate()
val sparkContext: SparkContext = sparkSession.sparkContext
val queueOfRDDs = mutable.Queue[RDD[String]]()


val streamingContext: StreamingContext = new StreamingContext(sparkContext, slideDuration)
val rddOneQueuesAtATimeDS: DStream[String] = streamingContext.queueStream(queueOfRDDs, oneAtATime = true)
val rddFloodOfQueuesDS: DStream[String] = streamingContext.queueStream(queueOfRDDs, oneAtATime = false)

rddOneQueuesAtATimeDS.print(120)
rddFloodOfQueuesDS.print(120)

streamingContext.start()


for (i <- (1 to 10)) {
  queueOfRDDs += sparkContext.makeRDD(simplePurchase(i))
  queueOfRDDs += sparkContext.makeRDD(simplePurchase((i + 3) * (i + 3)))
  Thread.sleep(slideDuration.milliseconds)
}

Thread.sleep(1000L)
val slideDuration=毫秒(100)
val conf=new SparkConf().setAppName(“NetworkWordCount”).setMaster(“local[8]”)
val sparkSession:sparkSession=sparkSession.builder.config(conf.getOrCreate())
val sparkContext:sparkContext=sparkSession.sparkContext
val queueofrds=mutable.Queue[RDD[String]]()
val streamingContext:streamingContext=新streamingContext(sparkContext,slideDuration)
val rddonequeuestatimeds:DStream[String]=streamingContext.queueStream(queueofrds,oneAtATime=true)
val rddfloodofqueesds:DStream[String]=streamingContext.queueStream(queueOfRDDs,oneAtATime=false)
RDDONEQUEUESATIMEDS.打印(120)
RDDFloodoFQUESDS.打印(120)
streamingContext.start()
为了