将 RDD 初始化为空

2022-09-02 12:31:20

我有一个 RDD,称为

JavaPairRDD<String, List<String>> existingRDD; 

现在我需要将其初始化为空,以便当我获得实际的rdd时,我可以与此进行联合。如何初始化为空 RDD,除非将其初始化为 null?这是我的代码:existingRDDexistingRDDexistingRDD

JavaPairRDD<String, List<String>> existingRDD;
if(ai.get()%10==0)
{
    existingRDD.saveAsNewAPIHadoopFile("s3://manthan-impala-test/kinesis-dump/" + startTime + "/" + k + "/" + System.currentTimeMillis() + "/",
    NullWritable.class, Text.class, TextOutputFormat.class); //on worker failure this will get overwritten                                  
}
else
{
    existingRDD.union(rdd);
}

答案 1

要在Java中创建一个空RDD,您只需执行以下操作:

// Get an RDD that has no partitions or elements.
JavaSparkContext jsc;
...
JavaRDD<T> emptyRDD = jsc.emptyRDD();

我相信你知道如何使用泛型,否则,对于你的情况,你需要:

JavaRDD<Tuple2<String,List<String>>> emptyRDD = jsc.emptyRDD();
JavaPairRDD<String,List<String>> emptyPairRDD = JavaPairRDD.fromJavaRDD(
  existingRDD
);

您还可以使用该方法将 您的转换为 .mapToPairJavaRDDJavaPairRDD

斯卡拉 :

val sc: SparkContext = ???
... 
val emptyRDD = sc.emptyRDD
// emptyRDD: org.apache.spark.rdd.EmptyRDD[Nothing] = EmptyRDD[1] at ...

答案 2
val emptyRdd=sc.emptyRDD[String]

上面的语句将创建带有类型的空RDDString

从 SparkContext 类:

获取没有分区或元素的 RDD

def emptyRDD[T: ClassTag]: EmptyRDD[T] = new EmptyRDD[T] (this)

推荐