为数据帧创建的分区的初始数量是多少?

时间:2018-03-07 04:32:45

标签: apache-spark dataframe parallel-processing partitioning

我是Spark的新手。我试图理解hiveContext.sql("query")语句默认生成的分区数。我知道在使用repartition创建dataframe之后我们可以df.repartition。但是,最初创建dataframe时默认生成的分区数是多少?

我理解sc.parallelize和其他一些转换会根据spark.default.parallelism生成分区数。但是dataframe呢?我看到一些答案说设置spark.sql.shuffle.partitions在执行像join这样的shuffle操作时产生了设定的分区数。这是否在创建数据帧时给出初始分区数?

然后我也看到了一些答案,解释了通过设置

生成的分区数量
mapred.min.split.size.
mapred.max.split.size and
hadoop block size

然后,当我尝试实际操作时,我将1000万条记录读入一个带有2个执行器和每个执行器4个内核的spark-shell中的数据帧中。当我df.rdd.getNumPartitions时,我得到了值1。我如何得到1分区数?不是2最小分区数?

当我对dataframe进行统计时,我发现有200个任务正在启动。这是由于spark.sql.shuffle.partitions设置吗?

我完全糊涂了!有人可以回答我的问题吗?任何帮助,将不胜感激。谢谢!

0 个答案:

没有答案