火花警告"块锁未被tid"导致表现不佳

时间:2017-03-01 23:40:58

标签: performance apache-spark locking warnings take

我正在学习火花。我试图演示一个简单的聚类算法。让我们说我在我的rdd上找到了代表集群的k项。问题是,当我尝试将它们带到驱动程序时,我收到警告说#34; tid"没有释放块锁。这也导致性能不佳... 20下面代码的迭代在4核上使用2mb数据集需要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上做了适当的坚持。乔布斯似乎像一个魅力。我发现很多人都有这个问题,但没有答案。

我希望我能给你足够的细节,这是我的第一篇文章!

0 个答案:

没有答案