[
https://issues.apache.org/jira/browse/MAHOUT-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14133255#comment-14133255
]
Andrew Palumbo commented on MAHOUT-1615:
----------------------------------------
It looks like it has something to do with Spark reusing Objects in partitions.
If I change the minPartitions to 1 I only get a single Key:
{code}
mahout> val rdd = sdc.sequenceFile(path =
"/tmp/mahout-work-andy/20news-test-vectors/part-r-00000", classOf[Writable],
classOf[Writable], minPartitions = 1)
mahout> val keyVec = rdd.map(_._1).collect.distinct
keyVec: Array[org.apache.hadoop.io.Writable] = Array(/talk.religion.misc/84570)
mahout> keyVec.size
res1: Int = 1
{code}
the suggested fix is:
{code}
rdd.map(_.clone).cache
{code}
though i'm getting an error:
{code}
Access to protected method clone not permitted because
prefix type (org.apache.hadoop.io.Writable, org.apache.hadoop.io.Writable)
does not conform to
class $iwC where the access take place
{code}
when I try this.
> SparkEngine drmFromHDFS returning the same Key for all Key,Vec Pairs for
> Text-Keyed SequenceFiles
> -------------------------------------------------------------------------------------------------
>
> Key: MAHOUT-1615
> URL: https://issues.apache.org/jira/browse/MAHOUT-1615
> Project: Mahout
> Issue Type: Bug
> Reporter: Andrew Palumbo
> Fix For: 1.0
>
>
> When reading in seq2sparse output from HDFS in the spark-shell of form
> <Text,VectorWriteable> SparkEngine's drmFromHDFS method is creating rdds
> with the same Key for all Pairs:
> {code}
> mahout> val drmTFIDF= drmFromHDFS( path =
> "/tmp/mahout-work-andy/20news-test-vectors/part-r-00000")
> {code}
> Has keys:
> {...}
> key: /talk.religion.misc/84570
> key: /talk.religion.misc/84570
> key: /talk.religion.misc/84570
> {...}
> for the entire set. This is the last Key in the set.
> The problem can be traced to the first line of drmFromHDFS(...) in
> SparkEngine.scala:
> {code}
> val rdd = sc.sequenceFile(path, classOf[Writable], classOf[VectorWritable],
> minPartitions = parMin)
> // Get rid of VectorWritable
> .map(t => (t._1, t._2.get()))
> {code}
> which gives the same key for all t._1.
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)