当前位置: 首页 > 知识库问答 >
问题:

创建Spark dataframe时的分区数

申屠裕
2023-03-14

我创建一个数据文件,导入一个大约8MB的csv文件,如下所示:

val df = spark.read.option("inferSchema", "true").option("header", "true").csv("Datasets/globalpowerplantdatabasev120/*.csv")

最后,我打印dataframe的分区数:

df.rdd.partitions.size

res5: Int = 2

答案是2。

共有1个答案

管杜吟
2023-03-14

当您使用Spark读取文件时,分区数将被计算为defaultMinPartitions和根据hadoop输入拆分大小除以块大小计算的拆分数之间的最大值。因为您的文件很小,所以您得到的分区数是2,这是两个分区中的最大值。

默认的defaultMinPartitions计算为

def defaultMinPartitions: Int = math.min(defaultParallelism, 2)

请查看https://github.com/apache/spark/blob/e9f983df275c138626af35fd263a7abedf69297f/core/src/main/scala/org/apache/spark/sparkcontext.scala#l2329

 类似资料:
  • 我正在测试在一个正在运行的系统中添加Kafka分区,但我不清楚如果您将分区添加到一个现有的主题中,Kafka如何管理现有的数据。 例如: 我有一个主题为的Kafka实例,有一个分区和一个副本。 生产者组开始插入该主题,消费者组开始消费。 我更改主题以添加另一个分区。 在本例中,主题数据发生了什么?是在两个分区之间重新平衡,还是只有新生成的数据才会使用新分区?

  • 这是将Spark dataframe保存为Hive中的动态分区表的后续操作。我试图在答案中使用建议,但无法在Spark 1.6.1中使用 任何推动这一进程的帮助都是感激的。 编辑:还创建了SPARK-14927

  • 即使它是Hive表或HDFS文件,当Spark读取数据并创建数据帧时,我也在想RDD /数据帧中的分区数将等于HDFS中的部分文件数。但是,当我使用 Hive 外部表进行测试时,我可以看到该数字与 部件文件的数量 不同。数据帧中的分区数为 119。该表是一个 Hive 分区表,其中包含 150 个部分文件,最小文件大小为 30 MB,最大大小为 118 MB。那么是什么决定了分区的数量呢?

  • 我有以下制表符分隔的示例数据集: 我正在对此数据运行一些转换,最终数据位于spark dataset中。之后,我用“period”分区将该数据集写入s3。因为我也希望在s3文件中使用period,所以我正在从from period列创建另一列“datasetperiod”。 我的scala函数来保存TSV数据集。 在S3上保存数据集的Scala代码。为S3上的分区添加新列datasetPeriod

  • 我有以下代码: ...原因:java.lang.ClassNotFoundException:com.fasterxml.jackson.databind.jsonNode在java.base/jdk.internal.loader.builtInclassLoader.LoadClass(builtInclassLoader.java:581)在java.base/jdk.internal.lo

  • 本文向大家介绍创建topic时如何选择合适的分区数?相关面试题,主要包含被问及创建topic时如何选择合适的分区数?时的应答技巧和注意事项,需要的朋友参考一下 根据集群的机器数量和需要的吞吐量来决定适合的分区数