提问人:Achilles 提问时间:3/2/2017 更新时间:3/2/2017 访问量:2092
Spark 警告“TID 未释放块锁”导致性能不佳
spark warning "block locks were not released by tid" leads to poor performance
问:
我正在学习火花。我正在尝试演示一个简单的聚类算法。假设我在我的 rdd 上找到了 k 个项目,这些项目代表我的一个集群。问题是当我尝试将它们带到驱动程序时,我收到一条警告,说“tid 未释放块锁”。这也导致了性能不佳......以下代码的 20 次迭代在具有 2mb 数据集的 4 核上需要 11 秒。这比我的系列版本更糟糕。好消息是我仍然得到了正确的结果。请看一看:
首先,我拿一个项目。任何项目都可以
List<Tuple2<Long, Instance>> selectedTuple = dataset.take(1);
Instance selected = selectedTuple.get(0)._2;
然后,我创建一个对象,该对象将根据我刚刚找到的选定项为我的集群查找候选项。作为记录,它实现了 PairFlatMapFunction
NCPComparator comp = new NCPComparator(meta, selected);
下一步找到一些候选人
JavaPairRDD<Long, Double> candidates = this.dataset.mapPartitionsToPair(comp);
但是现在,我需要具有最低 Double 值的 k 个,所以我实现了一个 TupleComparator。然后我调用了 takeOrdered
List<Tuple2<Long, Double>> groupList = candidates.takeOrdered(k, new TupleComparator());
此时,将显示该警告。调用 top() 也是如此。而作为一种迭代算法,它出现在每一次迭代中。我没有向你展示其余的代码。你猜对了..这不仅仅是微不足道的:-)
此外,我确实在我的 rdds 上进行了适当的坚持。乔布斯似乎很有吸引力。我发现很多人都有这个问题,但没有答案。
我希望我给了你足够的细节,这是我的第一篇文章!
答: 暂无答案
评论