Apache spark 火花流收集()

Apache spark 火花流收集(),apache-spark,pyspark,spark-streaming,Apache Spark,Pyspark,Spark Streaming,我正在使用spark streaming,并开发了以下spark streaming应用程序: 它从Kafka接收器(RDD1)创建一个数据流,从HTTP请求(RDD2)创建另一个数据流 我的问题是,我只想使用RDD1中的第一个元素,并在我的RDD2中使用它,而这段代码在spark streaming(.first())中不起作用。如何使用spark streaming 1.6获得相同的结果 代码: firstLineRDD = kvs.map(lambda x : x[0], x[1].

我正在使用spark streaming,并开发了以下spark streaming应用程序:

它从Kafka接收器(RDD1)创建一个数据流,从HTTP请求(RDD2)创建另一个数据流

我的问题是,我只想使用RDD1中的第一个元素,并在我的RDD2中使用它,而这段代码在spark streaming(.first())中不起作用。如何使用spark streaming 1.6获得相同的结果

代码:

   firstLineRDD = kvs.map(lambda x : x[0], x[1].split('\n')[0], x[2])
   dateRDD = firstLineRDD.map(lambda x : (datetime.datetime.fromtimestamp(float(x[0])/1000000),x[1],x[2]))
   dayAggRDD = dateRDD.map(lambda x : (x[0],x[1],x[2]))
   daily_date, sys , metric  = dayAggRDD.first()
   dataTSRDD = sc.parallelize(apiRequest(sys,metric,getDailyDate(daily_date)))

我在这里使用了两个Kafka流,但它与您的用例几乎相同。(在java中)。我已将这些流转换为数据集,然后您可以为第一个数据集获取第一个元素,然后使用值来操作第二个数据集。下面是代码的简要摘要:

DstreamCoord.foreachRDD(new VoidFunction<JavaRDD<Coordinates>>() {

        String valueA;
        String valueB;

        public void call(JavaRDD<Coordinates> arg0) throws Exception {
            // TODO Auto-generated method stub

        RDD<Coordinates> d = arg0.rdd();

        Dataset<Row> dataset1 = session.createDataFrame(d, Coordinates.class);

        Row firstElement = dataset1.first();
            valueA = firstElement.getString(1);
            valueB = firstElement.getString(1);

            JavaInputDStream<ConsumerRecord<String, String>> stream2 =
                      org.apache.spark.streaming.kafka010.KafkaUtils.createDirectStream(
                        StreamingContext,
                        LocationStrategies.PreferConsistent(),
                        ConsumerStrategies.<String, String>Subscribe(topics, kafkaParams)
                      );

            stream2.foreachRDD(new VoidFunction<JavaRDD<ConsumerRecord<String,String>>>() {

                public void call(JavaRDD<ConsumerRecord<String, String>> arg0) throws Exception {
                    // TODO Auto-generated method stub

                Dataset<Row> dataset2 =     session.createDataFrame(arg0.rdd(), Coordinates.class);



                }
            });
DstreamCoord.foreachRDD(新的VoidFunction(){
字符串值a;
字符串值b;
公共void调用(JavaRDD arg0)引发异常{
//TODO自动生成的方法存根
RDD=arg0.RDD();
Dataset dataset1=session.createDataFrame(d,Coordinates.class);
Row firstElement=dataset1.first();
valueA=firstElement.getString(1);
valueB=firstElement.getString(1);
JavaInputdStream2=
org.apache.spark.streaming.kafka010.KafkaUtils.createDirectStream(
流线型背景,
LocationStrategies.PreferConsistent(),
订阅(主题,卡夫卡帕拉)
);
stream2.foreachRDD(新的VoidFunction(){
公共void调用(JavaRDD arg0)引发异常{
//TODO自动生成的方法存根
Dataset dataset2=session.createDataFrame(arg0.rdd(),Coordinates.class);
}
});

是那些
RDD
还是
DStream
s???@massg我已经用DStreamsazelix修改了我的帖子im,我仍然看不到你提到的
DStream
。这里我有两个数据集,有两列,分别是latitude和longitude