Yes, adding `.value` has no effect. On Nov 15, 2016 1:25 PM, "Dmitriy Lyubimov (JIRA)" <[email protected]> wrote:
> > [ https://issues.apache.org/jira/browse/MAHOUT-1892?page= > com.atlassian.jira.plugin.system.issuetabpanels:comment- > tabpanel&focusedCommentId=15668009#comment-15668009 ] > > Dmitriy Lyubimov commented on MAHOUT-1892: > ------------------------------------------ > > Shell is a mystery. Obviously it tries to drag A itself into the mapblock > closure, buy why is escaping me. > > What happens if we remove implicit conversion (i.e. use bcastV.value > explicitly inside the closure)? is it still happening? > > > Can't broadcast vector in Mahout-Shell > > -------------------------------------- > > > > Key: MAHOUT-1892 > > URL: https://issues.apache.org/jira/browse/MAHOUT-1892 > > Project: Mahout > > Issue Type: Bug > > Reporter: Trevor Grant > > > > When attempting to broadcast a Vector in Mahout's spark-shell with > `mapBlock` we get serialization errors. **NOTE** scalars can be broadcast > without issue. > > I did some testing in the "Zeppelin Shell" for lack of a better term. > See https://github.com/apache/zeppelin/pull/928 > > The `mapBlock` same code I ran in the spark-shell below, also generated > errors. However, wrapping a mapBlock into a function in a compiled jar > https://github.com/apache/mahout/pull/246/commits/ > ccb5da65330e394763928f6dc51d96e38debe4fb#diff- > 4a952e8e09ae07e0b3a7ac6a5d6b2734R25 and then running said function from > the Mahout Shell or in the "Zeppelin Shell" (using Spark or Flink as a > runner) works fine. > > Consider > > ``` > > mahout> val inCoreA = dense((1, 2, 3), (3, 4, 5)) > > val A = drmParallelize(inCoreA) > > val v: Vector = dvec(1,1,1) > > val bcastV = drmBroadcast(v) > > val drm2 = A.mapBlock() { > > case (keys, block) => > > for(row <- 0 until block.nrow) block(row, ::) -= bcastV > > keys -> block > > } > > drm2.checkpoint() > > ``` > > Which emits the stack trace: > > ``` > > org.apache.spark.SparkException: Task not serializable > > at org.apache.spark.util.ClosureCleaner$.ensureSerializable( > ClosureCleaner.scala:304) > > at org.apache.spark.util.ClosureCleaner$.org$apache$ > spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:294) > > at org.apache.spark.util.ClosureCleaner$.clean( > ClosureCleaner.scala:122) > > at org.apache.spark.SparkContext.clean(SparkContext.scala:2032) > > at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:318) > > at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:317) > > at org.apache.spark.rdd.RDDOperationScope$.withScope( > RDDOperationScope.scala:147) > > at org.apache.spark.rdd.RDDOperationScope$.withScope( > RDDOperationScope.scala:108) > > at org.apache.spark.rdd.RDD.withScope(RDD.scala:310) > > at org.apache.spark.rdd.RDD.map(RDD.scala:317) > > at org.apache.mahout.sparkbindings.blas.MapBlock$. > exec(MapBlock.scala:33) > > at org.apache.mahout.sparkbindings.SparkEngine$. > tr2phys(SparkEngine.scala:338) > > at org.apache.mahout.sparkbindings.SparkEngine$. > toPhysical(SparkEngine.scala:116) > > at org.apache.mahout.math.drm.logical.CheckpointAction. > checkpoint(CheckpointAction.scala:41) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC. > <init>(<console>:58) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.< > init>(<console>:68) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:70) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:72) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:74) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:76) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:78) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:80) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC.<init>(<console>:82) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC.<init>(<console>:84) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC.<init>(<console>:86) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC.<init>(<console>:88) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC. > <init>(<console>:90) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.< > init>(<console>:92) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(< > console>:94) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(< > console>:96) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:98) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:100) > > at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:102) > > at $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:104) > > at $iwC$$iwC$$iwC$$iwC.<init>(<console>:106) > > at $iwC$$iwC$$iwC.<init>(<console>:108) > > at $iwC$$iwC.<init>(<console>:110) > > at $iwC.<init>(<console>:112) > > at <init>(<console>:114) > > at .<init>(<console>:118) > > at .<clinit>(<console>) > > at .<init>(<console>:7) > > at .<clinit>(<console>) > > at $print(<console>) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:498) > > at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call( > SparkIMain.scala:1065) > > at org.apache.spark.repl.SparkIMain$Request.loadAndRun( > SparkIMain.scala:1340) > > at org.apache.spark.repl.SparkIMain.loadAndRunReq$1( > SparkIMain.scala:840) > > at org.apache.spark.repl.SparkIMain.interpret( > SparkIMain.scala:871) > > at org.apache.spark.repl.SparkIMain.interpret( > SparkIMain.scala:819) > > at org.apache.spark.repl.SparkILoop.reallyInterpret$1( > SparkILoop.scala:857) > > at org.apache.spark.repl.SparkILoop.interpretStartingWith( > SparkILoop.scala:902) > > at org.apache.spark.repl.SparkILoop.command(SparkILoop. > scala:814) > > at org.apache.spark.repl.SparkILoop.processLine$1( > SparkILoop.scala:657) > > at org.apache.spark.repl.SparkILoop.innerLoop$1( > SparkILoop.scala:665) > > at org.apache.spark.repl.SparkILoop.org$apache$spark$ > repl$SparkILoop$$loop(SparkILoop.scala:670) > > at org.apache.spark.repl.SparkILoop$$anonfun$org$ > apache$spark$repl$SparkILoop$$process$1.apply$mcZ$sp(SparkILoop.scala:997) > > at org.apache.spark.repl.SparkILoop$$anonfun$org$ > apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945) > > at org.apache.spark.repl.SparkILoop$$anonfun$org$ > apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945) > > at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader( > ScalaClassLoader.scala:135) > > at org.apache.spark.repl.SparkILoop.org$apache$spark$ > repl$SparkILoop$$process(SparkILoop.scala:945) > > at org.apache.spark.repl.SparkILoop.process(SparkILoop. > scala:1059) > > at org.apache.mahout.sparkbindings.shell.Main$. > main(Main.scala:37) > > at org.apache.mahout.sparkbindings.shell.Main.main(Main.scala) > > Caused by: java.io.NotSerializableException: org.apache.mahout. > sparkbindings.drm.CheckpointedDrmSpark > > Serialization stack: > > - object not serializable (class: org.apache.mahout. > sparkbindings.drm.CheckpointedDrmSpark, value: org.apache.mahout. > sparkbindings.drm.CheckpointedDrmSpark@2d1c2fe7) > > - field (class: $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC, > name: A, type: interface org.apache.mahout.math.drm.CheckpointedDrm) > > - object (class $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC, > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC@291be813) > > - field (class: $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1, name: $outer, type: class > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC) > > - object (class $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$ > $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1, <function1>) > > - field (class: > > org.apache.mahout.sparkbindings.blas.MapBlock$$anonfun$exec$2, > name: bmf$1, type: interface scala.Function1) > > - object (class > > org.apache.mahout.sparkbindings.blas.MapBlock$$anonfun$exec$2, > <function1>) > > at org.apache.spark.serializer.SerializationDebugger$. > improveException(SerializationDebugger.scala:40) > > at org.apache.spark.serializer.JavaSerializationStream. > writeObject(JavaSerializer.scala:47) > > at org.apache.spark.serializer.JavaSerializerInstance. > serialize(JavaSerializer.scala:84) > > at org.apache.spark.util.ClosureCleaner$.ensureSerializable( > ClosureCleaner.scala:301) > > ... 66 more > > ``` > > > > -- > This message was sent by Atlassian JIRA > (v6.3.4#6332) >
