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 2.0中,数据帧的GroupBy操作需要花费大量时间_Apache Spark_Spark Dataframe_Emr_Amazon Emr - Fatal编程技术网

Apache spark 在spark 2.0中,数据帧的GroupBy操作需要花费大量时间

Apache spark 在spark 2.0中,数据帧的GroupBy操作需要花费大量时间,apache-spark,spark-dataframe,emr,amazon-emr,Apache Spark,Spark Dataframe,Emr,Amazon Emr,在我的一个spark工作(EMR5.0.0上的2.0)中,我有大约5GB的数据,这些数据与30行交叉连接(数据大小为几MB)。我还需要按它分组。我注意到我花了很多时间(大约4个小时,一个m3.xlarge主节点和六个m3.2xlarge核心节点)。处理总共花了2小时,将数据写入s3又花了2小时。 所花的时间对我来说不是很深刻。我试着在网上搜索,发现了一个链接,上面说groupBy导致了很多混乱。它还建议,为了避免大量的混乱,应该使用ReduceByKey,因为ReduceByKey数据是组合在一

在我的一个spark工作(EMR5.0.0上的2.0)中,我有大约5GB的数据,这些数据与30行交叉连接(数据大小为几MB)。我还需要按它分组。我注意到我花了很多时间(大约4个小时,一个m3.xlarge主节点和六个m3.2xlarge核心节点)。处理总共花了2小时,将数据写入s3又花了2小时。 所花的时间对我来说不是很深刻。我试着在网上搜索,发现了一个链接,上面说groupBy导致了很多混乱。它还建议,为了避免大量的混乱,应该使用ReduceByKey,因为ReduceByKey数据是组合在一起的,所以每个分区最多为每个密钥输出一个值,以便通过网络发送。而使用groupByKey进行洗牌时,所有数据都会通过网络进行浪费性发送,并在reduce workers上进行收集。 然而,spark数据帧中没有reduceByKey的直接API。您需要将dataFrame转换为RDD,然后执行reduceByKey。 所以问题是—— 1.是否有人面临类似的问题?采取了哪些措施来提高绩效? 2.我选择的机器不对吗? 3.spark 2.0中的GroupBy已经在进行类似reduceByKey的优化,因此reduceByKey不需要作为DataFrame API

下面是groupBy的代码-

val aggregtedDF: DataFrame = joinedDFWithOtherDfs.groupBy("Col1", "Col2").agg(min("Col3").alias("Col3"))