下一个代码是生成和写入8个分区,但在读取时,它会为每个核心生成一个分区。我知道这是因为文件太小,然后试图最大化每个核心的记录数。
是否可以强制读取器为每个文件生成一个分区?
在本例中,spark写入8个文件,但在读取时,它会生成4个分区,就像使用的内核数一样。
from pyspark import Row
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master("local[4]") \
.appName("Testing partitions") \
.getOrCreate()
sc = spark.sparkContext
df = spark.createDataFrame(sc.parallelize(range(1, 32), 8).map(lambda i: Row(col1=i))).persist()
print(df.rdd.getNumPartitions())
# Output is 8
df.write \
.mode('overwrite') \
.csv("tmp/test_partitions/in")
df = spark \
.read \
.csv("tmp/test_partitions/in").persist()
print(df.rdd.getNumPartitions())
# Output is 4
df.write \
.mode('overwrite') \
.csv("tmp/test_partitions/out")
暂无答案!
目前还没有任何答案,快来回答吧!