Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Pyspark partitionBy函数不重新划分数据帧_Apache Spark_Pyspark_Pyspark Dataframes - Fatal编程技术网

Apache spark Pyspark partitionBy函数不重新划分数据帧

Apache spark Pyspark partitionBy函数不重新划分数据帧,apache-spark,pyspark,pyspark-dataframes,Apache Spark,Pyspark,Pyspark Dataframes,我用下面的函数重新划分数据帧,但当我查看数据帧上的分区数时,它并没有显示更新的分区,而是显示初始分区 df.rdd.repartition(100) df.rdd.partitionBy(100,partitionFunc="HashPartitioner") df.rdd.getNumPartitions() // Result - 519 它应该将分区数显示为100,但它给出的是519(初始值)。我是否遗漏了任何内容(在pyspark shell中运行代码)。您应该将重

我用下面的函数重新划分数据帧,但当我查看数据帧上的分区数时,它并没有显示更新的分区,而是显示初始分区

df.rdd.repartition(100)
df.rdd.partitionBy(100,partitionFunc="HashPartitioner")
df.rdd.getNumPartitions() // Result - 519

它应该将分区数显示为100,但它给出的是519(初始值)。我是否遗漏了任何内容(在pyspark shell中运行代码)。

您应该将重新分区的数据帧保存为某个值或新的数据帧,然后再次检查

df=spark.createDataFrame([(1,'test')],['id','value'])
打印(df.rdd.getNumPartitions())
# 1
df=df.重新分区(10)
打印(df.rdd.getNumPartitions())
# 10

df.rdd.repartition(100)和刚刚离开。它不会保存在任何地方,对吗?是的!哦,我必须创建新的DF,因为数据帧是不可变的,对吗?数据帧是不可变的?是的,谢谢!另外,
df.rdd.partitionBy(100,partitionFunc=“HashPartitioner”)
将生成一个rdd,因此我必须将其转换回DataFrame,或者有另一个函数可以直接在DataFrame上执行任务。因此,我不需要将其转换回数据帧。这取决于您。是否有更好的方法,或者我们必须将其转换为RDD,然后再转换回数据帧以应用HashPartitioner。我只知道后面的方法。