一个spark数据框架的分区数?

问题描述 投票:0回答:1

我有一个spark数据框架(Spark 2.3),它存储的sql记录为零。当我试图计算分区数时,它不显示任何结果,并尝试了各种函数,如df.rdd.getNumPartitions df.rdd.getNumPartitions() df.rdd.length df.rdd.partitions.size。

如何从一个有零记录或百万记录的spark数据帧中获取分区数?

代码:我有一个spark数据框(dataframe),有零记录或百万记录,如何从这个数据框中获取分区数?

empsql = 'Select * From Employee' ## In this sql it has zero records
df = spark.sql(empsql) ##Spark is configured
df.rdd.getNumPartitions

#Using df.rdd.partitions.size got error as: AttributeError: 'RDD' object has no attribute 'partitions'
dataframe apache-spark apache-spark-sql rdd
1个回答
1
投票

尝试,假设pyspark。

df.rdd.getNumPartitions()

通过空DF进行模拟,这应该相当于一个空查询。

from pyspark.sql.types import *
field = [StructField("FIELDNAME_1",StringType(), True),StructField("FIELDNAME_2", StringType(), True),  StructField("FIELDNAME_3", StringType(), True)]
schema = StructType(field)
df = sqlContext.createDataFrame(sc.emptyRDD(), schema)
df.rdd.getNumPartitions()

返回:

Out[6]: 0

此外:

df.registerTempTable('XXX')
yyy = spark.sql("select * from XXX")
yyy.rdd.getNumPartitions()

yields:

Out[11]: 0
© www.soinside.com 2019 - 2024. All rights reserved.