我在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。
你能否告诉我这种缓慢的原因是什么原因? 考虑到最终Dataset
中的行数
有什么方法可以解决这个问题吗?它与分区数量有关吗?
谢谢!