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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Apache spark 为什么不建议使用parallelize方法创建emptyRDD?_Apache Spark_Parallel Processing_Rdd - Fatal编程技术网

Apache spark 为什么不建议使用parallelize方法创建emptyRDD?

Apache spark 为什么不建议使用parallelize方法创建emptyRDD?,apache-spark,parallel-processing,rdd,Apache Spark,Parallel Processing,Rdd,我正在学习apache-spark并试图创建一个空的RDD。 我获得了以下创建空RDD的方法: 1. JavaRDD<String> emptyRDD = sc.emptyRDD(); 2. List<String> emptyList = new ArrayList<String>(); JavaRDD<String> emptyParallelRDD = sc.parallelize(emptyList, 1); 1。JavaRDD e

我正在学习apache-spark并试图创建一个空的RDD。 我获得了以下创建空RDD的方法:

1. JavaRDD<String> emptyRDD = sc.emptyRDD();
2. List<String> emptyList = new ArrayList<String>();
   JavaRDD<String> emptyParallelRDD = sc.parallelize(emptyList, 1);
1。JavaRDD emptyRDD=sc.emptyRDD();
2.List emptyList=new ArrayList();
JavaRDD emptypparallelrdd=sc.parallelize(emptyList,1);
代码在这两种情况下都工作得很好,没有错误,也没有异常

但在并行化方法的文档中:

避免使用parallelize(Seq())创建空RDD。考虑没有分区的RDD的EMPTRODD < /P>
sc.emptyRDD[Int].getNumPartitions
// Int = 0
我找不到任何理由。
如果有任何帮助,为什么不使用parallelize创建emptyRDD?

一个
emptyRDD
没有分区

sc.emptyRDD[Int].getNumPartitions
// Int = 0
而以下分区将具有默认数量的无数据分区:

sc.parallelize(Seq[Int]()).getNumPartitions
// Int = 2
我的猜测是,在第一种情况下,任何涉及空RDD的作业都应该更快,因为没有分区将导致根本没有作业被执行

例如,
saveAsTextFile
在第一种情况下不会生成零件文件,但在第二种情况下会生成两个空零件文件

scala> sc.emptyRDD[Int].saveAsTextFile("emptyRDDTest")

scala> sc.parallelize(Seq[Int]()).saveAsTextFile("emptySeqTest")

$ hdfs dfs -ls empty*
Found 1 items
hadoop          0 2017-12-07 02:38 emptyRDDTest/_SUCCESS
Found 3 items
hadoop          0 2017-12-07 02:39 emptySeqTest/_SUCCESS
hadoop          0 2017-12-07 02:39 emptySeqTest/part-00000
hadoop          0 2017-12-07 02:39 emptySeqTest/part-00001