Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 在spark SQL中按vs群集分发_Apache Spark_Apache Spark Sql_Hiveql - Fatal编程技术网

Apache spark 在spark SQL中按vs群集分发

Apache spark 在spark SQL中按vs群集分发,apache-spark,apache-spark-sql,hiveql,Apache Spark,Apache Spark Sql,Hiveql,我最近开始研究spark,在加入之前,我们总是使用cluster by优化表,但我想知道是否存在我们更喜欢distribute by而不是cluster by子句的情况。cluster by和distribute by之间的唯一区别是 仅通过基于表达式的重新分区分发数据,而通过首先重新分区该数据然后根据每个分区中的键对数据进行排序来聚集数据 dataframe api中cluster by和distribute by的等效表示如下: 分发 df.重新分区($“键”,2) 群集 重新分区($“ke

我最近开始研究spark,在加入之前,我们总是使用cluster by优化表,但我想知道是否存在我们更喜欢distribute by而不是cluster by子句的情况。

cluster by和distribute by之间的唯一区别是 仅通过基于表达式的重新分区分发数据,而通过首先重新分区该数据然后根据每个分区中的键对数据进行排序来聚集数据

dataframe api中cluster by和distribute by的等效表示如下: 分发

df.重新分区($“键”,2)

群集

重新分区($“key”,2).sortWithinPartitions()


两者都涉及洗牌操作,但cluster by有额外的排序操作。

感谢您澄清这一点,但我想知道是否有任何真实的场景/情况,我们更喜欢按分发而不是按群集分发。我想不起我曾经处理过的任何真实场景。但假设您希望将数据帧的输出写入文件中的磁盘,并且希望对每个文件中的每个内容进行排序,那么您更喜欢使用集群。如果您不关心排序,您可以继续使用Distributby。