predictionio-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pat Ferrel <>
Subject Re: UniversalRecommender performance bottleneck in SimilarityAnalysis.cooccurrencesIDSs
Date Sat, 19 Nov 2016 21:04:25 GMT
The current head of the template repo repartitions input based on Spark's default parallelism,
which I set on the `pio train` CLI to 4 x #-of-cores. This speeds up the math drastically.
There are still some things that look like bottlenecks but taking them out make things slower.
The labels you see in the Spark GUI should be considered approximations.

The parOpt is a mahout specific way to control partitioning and I avoid it by using the Spark

On Nov 16, 2016, at 5:56 AM, Igor Kasianov <> wrote:


I'm using UR template and have some trouble with scalability.

Training take 18hours (each day) and last 12 hours it use only one core.
As I can see URAlgorithm.scala (line 144) call SimilarityAnalysis.cooccurrencesIDSs
with data.actions (12 partitions)

untill reduceByKey in AtB.scala it executes in parallel
but after this it executing in single thread.

It is strange, that when SimilarityAnalysis.scala(line 145) call
indexedDatasets(0).create(drm, indexedDatasets(0).columnIDs, indexedDatasets(i).columnIDs)
it return IndexedDataset with only one partition.

As I can see in SimilarityAnalysis.scala(line 63)
drmARaw.par(auto = true)
May be this cause decreasing the number of partitions.
As I can see in master branch of MAHOUT
has ParOpt:
May be this can fix the problem.

So, am I right with root of problems, and how can I fix it?

<Screenshot from 2016-11-16 15:42:36.png>
I have spark cluster with 12 Cores and 128GB but with increasing number of events, I can't
scale UR, beause of this bottleneck

P.S., please do not suggest to use event window (I've already use it. but daily numer of events
are increasing)

View raw message