从 Hive 表读取数据创建的 Spark DataFrame 的分区数

Sri*_*Sri 5 hive apache-spark-sql

我对 Spark 数据帧分区数量有疑问。

如果我有 Hive 表(员工),其中包含列(姓名、年龄、ID、位置)。

CREATE TABLE employee (name String, age String, id Int) PARTITIONED BY (location String);

如果员工表有 10 个不同的位置。所以数据在HDFS中会被划分为10个分区。

如果我通过读取 Hive 表(员工)的全部数据来创建 Spark 数据框(df)。

Spark 将为一个数据帧(df)创建多少个分区?

df.rdd.partitions.size = ??

小智 1

分区是根据 HDFS 的块大小创建的。

想象一下,您已将 10 个分区作为单个 RDD 读取,如果块大小为 128MB,那么

分区数量 =(大小(10 个分区,以 MB 为单位))/ 128MB

将存储在 HDFS 上。

请参考以下链接:

http://www.bigsynapse.com/spark-input-output

  • 但我说的是由一列分区的 Hive 表。这是否会成为 Spark 决定通过读取该配置单元表创建的数据帧的分区数量的驱动因素? (2认同)