我正在对列使用分区,以将数据存储在拼花中。但 我看到没有。实木复合地板分区文件的数量与 没有。 Rdd分区。 rdd分区之间没有相关性 和实木复合地板隔板?
当我将数据写入木地板分区并且使用Rdd时 重新分区,然后我从实木复合地板分区读取数据,是 rdd分区号相同时有任何条件 在读/写期间?
如何使用列ID对数据框进行存储并重新分区 数据框是否通过相同的列ID不同?
在考虑Spark中联接的性能时,我们应该 在查看存储分区或重新分区(或可能同时分区)
答案 0 :(得分:6)
您正在询问的事物的结合-数据的分区,存储和平衡
分区:
在Spark中,此操作由df.write.partitionedBy(column*)
完成,并通过将columns
分区到同一子目录中来对数据进行分组。
装箱:
Distribute By
同义词在Spark中,此操作由df.write.bucketBy(n, column*)
完成,并通过将columns
分区到同一文件中来对数据进行分组。生成的文件数由n
分区:
DataFrame
平衡。所得的DataFrame被哈希分区。在Spark中,此操作由df.repartition(n, column*)
完成,并通过将columns
分区到同一内部分区文件中来对数据进行分组。请注意,没有数据可持久存储,这只是基于类似于bucketBy
Tl; dr
1)我正在对列使用分区,以将数据存储在拼花中。但我看到没有。实木复合地板分区文件的编号与否不同。 Rdd分区。 rdd分区和实木复合地板分区之间没有关联吗?
spark.sql.shuffle.partitions
和spark.default.parallelism
2)当我将数据写入镶木地板分区并使用Rdd重新分区,然后从镶木地板分区读取数据时,在读/写期间rdd分区号相同时是否存在任何条件吗?
em>spark.default.parallelism
3)使用列ID存储数据帧和通过相同的列ID重新划分数据帧有何不同?
4)在考虑Spark中联接的性能时,我们应该着眼于存储分区或重新分区(或者可能是两者)
repartition
都在内存中,如果其中一个或两个数据集都保留了,则还要查看bucketBy
。