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 我想测量Spark';数据帧聚合的性能。计数还是收集行动?_Apache Spark_Spark Dataframe_Pyspark Sql - Fatal编程技术网

Apache spark 我想测量Spark';数据帧聚合的性能。计数还是收集行动?

Apache spark 我想测量Spark';数据帧聚合的性能。计数还是收集行动?,apache-spark,spark-dataframe,pyspark-sql,Apache Spark,Spark Dataframe,Pyspark Sql,我想在Spark上创建dataframe的性能结果统计信息。我在groupBy之后调用count()操作并测量它所花费的时间 df.groupBy('Student').sum('Marks').count() 但是,我发现如果我使用collect()而不是count(),那么结果要多花10倍的时间。为什么? 还有,如果我执行上述基准测试,我应该使用count()或collect()方法 谢谢。Spark数据帧使用查询优化器(称为Catalyst)加速Spark管道。在这种情况下,发生的事情有

我想在Spark上创建dataframe的性能结果统计信息。我在groupBy之后调用count()操作并测量它所花费的时间

df.groupBy('Student').sum('Marks').count()
但是,我发现如果我使用collect()而不是count(),那么结果要多花10倍的时间。为什么?

还有,如果我执行上述基准测试,我应该使用count()或collect()方法


谢谢。

Spark数据帧使用查询优化器(称为Catalyst)加速Spark管道。在这种情况下,发生的事情有两种可能性:

  • 收集比计数更贵。它涉及将分布在集群中的所有数据进行序列化,通过网络将其发送回驱动程序,然后对其进行反序列化。计数只需要在每个任务中计算一次数字并发送(小得多)

  • Catalyst实际上只是计算唯一“学生”值的数量。“sum”的结果从未实际使用过,因此它永远不需要计算


  • Spark数据帧使用查询优化器(称为Catalyst)来加速Spark管道。在这种情况下,发生的事情有两种可能性:

  • 收集比计数更贵。它涉及将分布在集群中的所有数据进行序列化,通过网络将其发送回驱动程序,然后对其进行反序列化。计数只需要在每个任务中计算一次数字并发送(小得多)

  • Catalyst实际上只是计算唯一“学生”值的数量。“sum”的结果从未实际使用过,因此它永远不需要计算


  • 但是如果我使用Spark Thrift Server-Hive,它会在几乎与count相同的时间内得到groupby查询的结果。那么在这种情况下,第一点可能是收集速度慢得多的原因。非常感谢。我想是这样的,因为我的spark驱动程序在我的机器上,工作人员在远程分布式集群上。但是如果我使用spark Thrift Server-Hive,它会在几乎与count相同的时间内获得groupby查询结果。那么在这种情况下,第一点可能是收集速度慢得多的原因。非常感谢。我想是这样的,因为我的spark驱动程序在我的机器上,而工作人员在远程分布式集群上。