简体   繁体   English

如何向 Spark 中的现有 RDD 添加更多 RDD?

[英]How to add more RDD to existing RDD in Spark?

I have a RDD and want to add more RDD to it.我有一个 RDD 并想向它添加更多 RDD。 How can I do it in Spark?我怎样才能在 Spark 中做到这一点? I have code like below.我有如下代码。 I want to return RDD from the dStream I have.我想从我拥有的 dStream 返回 RDD。

JavaDStream<Object> newDStream = dStream.map(this);
JavaRDD<Object> rdd = context.sparkContext().emptyRDD();
return newDStream.wrapRDD(context.sparkContext().emptyRDD());

I do not find much documentation about wrapRDD method of JavaDStream class provided by Apache Spark.我没有找到太多关于 Apache Spark 提供的 JavaDStream 类的wrapRDD方法的文档。

Since RDD is immutable , what you can do is use sparkContext.parallelize to create a new RDD and return the new one.由于 RDD 是不可变的,你可以做的是使用sparkContext.parallelize创建一个新的 RDD 并返回新的。

List<Object> objectList = new ArrayList<Object>;
objectList.add("your content");

JavaRDD<Object> objectRDD = sparkContext.parallelize(objectList);
JavaRDD<Object> newRDD = oldRDD.union(objectRDD);

See https://spark.apache.org/docs/latest/rdd-programming-guide.html#parallelized-collections请参阅https://spark.apache.org/docs/latest/rdd-programming-guide.html#parallelized-collections

You can use JavaStreamingContext.queueStream and fill it with a Queue<RDD<YourType>> :您可以使用JavaStreamingContext.queueStream并用Queue<RDD<YourType>>填充它:

public JavaInputDStream<Object> FillDStream() {
    LinkedList<RDD<Object>> rdds = new LinkedList<RDD<Object>>();
    rdds.add(context.sparkContext.emptyRDD());
    rdds.add(context.sparkContext.emptyRDD());

    JavaInputDStream<Object> filledDStream = context.queueStream(rdds);
    return filledStream;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM