Spark:爆炸功能极慢,消耗高CPU

时间:2018-03-01 09:03:15

标签: scala apache-spark apache-spark-sql spark-dataframe

我在Amazon EMR上的Apache Zeppelin上运行我的spark应用程序。 我使用8个m3.xlarge实例作为工作节点(8个vCore,15个GiB内存,80个SSD GB存储)。

我有以下代码行:

val userJobPredictionsDataset2 = userJobPredictionsDataset1.select($"userId", $"profile", explode($"notVisitedJobIds").as("notVisitedJobId"))

$"notVisitedJobIds"列是一个数组列。因此,我认为使用我的数据,上面select转换explode函数可以在userJobPredictionsDataset2中产生总共30k * 30k行(Dataset1 * Array列大小的行数)。行数可能很大,但userJobPredictionsDataset1的原始数据大小实际上并不大,大约为100MB~200MB。

然而,CPU消耗很高。 enter image description here

此外,已经过了一个小时,还没有完成Taskenter image description here

你能否告诉我这种缓慢的原因是什么原因? 考虑到最终Dataset中的行数

有什么方法可以解决这个问题吗?它与分区数量有关吗?

谢谢!

0 个答案:

没有答案