You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@spark.apache.org by "necro351 ." <ne...@gmail.com> on 2015/02/24 05:43:37 UTC
Getting to proto buff classes in Spark Context
Hello,
I am trying to deserialize some data encoded using proto buff from within
Spark and am getting class-not-found exceptions. I have narrowed the
program down to something very simple that shows the problem exactly (see
'The Program' below) and hopefully someone can tell me the easy fix :)
So the situation is I have some proto buff reports in /tmp/reports. I also
have a Spark project with the below Scala code (under The Program) as well
as a Java file defining SensorReports all in the same src sub-tree in my
Spark project. Its built using sbt in the standard way. The Spark job reads
in the reports from /tmp/reports and then prints them to the console. When
I build and run my spark job with spark-submit everything works as expected
and the reports are printed out. When I uncomment the 'XXX' variant in the
Scala spark program and try to print the reports from within a Spark
Context I get the class-not-found exceptions. I don't understand why. If I
get this working then I will want to do more than just print the reports
from within the Spark Context.
My read of the documentation tells me that my spark job should have access
to everything in the submitted jar and that jar includes the Java code
generated by the proto buff library which defines SensorReports. This is
the spark-submit invocation I use after building my job as an assembly with
the sbt-assembly plugin:
spark-submit --class com.rick.processors.NewReportProcessor --master
local[*]
../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
I have also tried adding the jar programmatically using sc.addJar but that
does not help. I found a bug from July (
https://github.com/apache/spark/pull/181) that seems related but it went
into Spark 1.2.0 (which is what I am currently using) so I don't think
that's it.
Any ideas? Thanks!
The Program:
==========
package com.rick.processors
import java.io.File
import java.nio.file.{Path, Files, FileSystems}
import org.apache.spark.{SparkContext, SparkConf}
import com.rick.reports.Reports.SensorReports
object NewReportProcessor {
private val sparkConf = new SparkConf().setAppName("ReportProcessor")
private val sc = new SparkContext(sparkConf)
def main(args: Array[String]) = {
val protoBuffsBinary = localFileReports()
val sensorReportsBundles = protoBuffsBinary.map(bundle =>
SensorReports.parseFrom(bundle))
// XXX: Printing from within the SparkContext throws class-not-found
// exceptions, why?
// sc.makeRDD(sensorReportsBundles).foreach((x: SensorReports) =>
println(x.toString))
sensorReportsBundles.foreach((x: SensorReports) => println(x.toString))
}
private def localFileReports() = {
val reportDir = new File("/tmp/reports")
val reportFiles =
reportDir.listFiles.filter(_.getName.endsWith(".report"))
reportFiles.map(file => {
val path = FileSystems.getDefault().getPath("/tmp/reports",
file.getName())
Files.readAllBytes(path)
})
}
}
The Class-not-found exceptions:
=========================
Spark assembly has been built with Hive, including Datanucleus jars on
classpath
Using Spark's default log4j profile:
org/apache/spark/log4j-defaults.properties
15/02/23 17:35:03 WARN Utils: Your hostname, ubuntu resolves to a loopback
address: 127.0.1.1; using 192.168.241.128 instead (on interface eth0)
15/02/23 17:35:03 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
another address
15/02/23 17:35:04 INFO SecurityManager: Changing view acls to: rick
15/02/23 17:35:04 INFO SecurityManager: Changing modify acls to: rick
15/02/23 17:35:04 INFO SecurityManager: SecurityManager: authentication
disabled; ui acls disabled; users with view permissions: Set(rick); users
with modify permissions: Set(rick)
15/02/23 17:35:04 INFO Slf4jLogger: Slf4jLogger started
15/02/23 17:35:04 INFO Remoting: Starting remoting
15/02/23 17:35:04 INFO Remoting: Remoting started; listening on addresses
:[akka.tcp://sparkDriver@192.168.241.128:38110]
15/02/23 17:35:04 INFO Utils: Successfully started service 'sparkDriver' on
port 38110.
15/02/23 17:35:04 INFO SparkEnv: Registering MapOutputTracker
15/02/23 17:35:04 INFO SparkEnv: Registering BlockManagerMaster
15/02/23 17:35:04 INFO DiskBlockManager: Created local directory at
/tmp/spark-local-20150223173504-b26c
15/02/23 17:35:04 INFO MemoryStore: MemoryStore started with capacity 267.3
MB
15/02/23 17:35:05 WARN NativeCodeLoader: Unable to load native-hadoop
library for your platform... using builtin-java classes where applicable
15/02/23 17:35:05 INFO HttpFileServer: HTTP File server directory is
/tmp/spark-c77dbc9a-d626-4991-a9b7-f593acafbe64
15/02/23 17:35:05 INFO HttpServer: Starting HTTP Server
15/02/23 17:35:05 INFO Utils: Successfully started service 'HTTP file
server' on port 50950.
15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
4040. Attempting port 4041.
15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
4041. Attempting port 4042.
15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
4042. Attempting port 4043.
15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
4043. Attempting port 4044.
15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
4044. Attempting port 4045.
15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
4045. Attempting port 4046.
15/02/23 17:35:06 INFO Utils: Successfully started service 'SparkUI' on
port 4046.
15/02/23 17:35:06 INFO SparkUI: Started SparkUI at
http://192.168.241.128:4046
15/02/23 17:35:06 INFO SparkContext: Added JAR
file:/home/rick/go/src/rick/sparksprint/containers/tests/StreamingReports/../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
at http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar with
timestamp 1424741706610
15/02/23 17:35:06 INFO AkkaUtils: Connecting to HeartbeatReceiver:
akka.tcp://sparkDriver@192.168.241.128:38110/user/HeartbeatReceiver
15/02/23 17:35:07 INFO NettyBlockTransferService: Server created on 57801
15/02/23 17:35:07 INFO BlockManagerMaster: Trying to register BlockManager
15/02/23 17:35:07 INFO BlockManagerMasterActor: Registering block manager
localhost:57801 with 267.3 MB RAM, BlockManagerId(<driver>, localhost,
57801)
15/02/23 17:35:07 INFO BlockManagerMaster: Registered BlockManager
15/02/23 17:35:07 INFO SparkContext: Starting job: foreach at
NewReportProcessor.scala:17
15/02/23 17:35:07 INFO DAGScheduler: Got job 0 (foreach at
NewReportProcessor.scala:17) with 1 output partitions (allowLocal=false)
15/02/23 17:35:07 INFO DAGScheduler: Final stage: Stage 0(foreach at
NewReportProcessor.scala:17)
15/02/23 17:35:07 INFO DAGScheduler: Parents of final stage: List()
15/02/23 17:35:07 INFO DAGScheduler: Missing parents: List()
15/02/23 17:35:07 INFO DAGScheduler: Submitting Stage 0
(ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17), which
has no missing parents
15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1360) called with
curMem=0, maxMem=280248975
15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0 stored as values in
memory (estimated size 1360.0 B, free 267.3 MB)
15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1071) called with
curMem=1360, maxMem=280248975
15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0_piece0 stored as
bytes in memory (estimated size 1071.0 B, free 267.3 MB)
15/02/23 17:35:07 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory
on localhost:57801 (size: 1071.0 B, free: 267.3 MB)
15/02/23 17:35:07 INFO BlockManagerMaster: Updated info of block
broadcast_0_piece0
15/02/23 17:35:07 INFO SparkContext: Created broadcast 0 from broadcast at
DAGScheduler.scala:838
15/02/23 17:35:07 INFO DAGScheduler: Submitting 1 missing tasks from Stage
0 (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17)
15/02/23 17:35:07 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks
15/02/23 17:35:07 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID
0, localhost, PROCESS_LOCAL, 5587 bytes)
15/02/23 17:35:07 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
15/02/23 17:35:07 INFO Executor: Fetching
http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar with
timestamp 1424741706610
15/02/23 17:35:08 INFO Utils: Fetching
http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar to
/tmp/fetchFileTemp2793880583189398319.tmp
15/02/23 17:35:08 INFO Executor: Adding
file:/tmp/spark-bdec3945-52d1-42bf-8b7a-30f14f492a42/rick-processors-assembly-1.0.jar
to class loader
15/02/23 17:35:08 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.io.IOException: java.lang.RuntimeException: Unable to find proto
buffer class
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
at
org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at
org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
at
org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Unable to find proto buffer class
at
com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
at
org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
... 20 more
Caused by: java.lang.ClassNotFoundException:
com.rick.reports.Reports$SensorReports
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at
com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
... 37 more
15/02/23 17:35:08 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0,
localhost): java.io.IOException: java.lang.RuntimeException: Unable to find
proto buffer class
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
at
org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at
org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
at
org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Unable to find proto buffer class
at
com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
at
org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
... 20 more
Caused by: java.lang.ClassNotFoundException:
com.rick.reports.Reports$SensorReports
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at
com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
... 37 more
15/02/23 17:35:08 ERROR TaskSetManager: Task 0 in stage 0.0 failed 1 times;
aborting job
15/02/23 17:35:08 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks
have all completed, from pool
15/02/23 17:35:08 INFO TaskSchedulerImpl: Cancelling stage 0
15/02/23 17:35:08 INFO DAGScheduler: Job 0 failed: foreach at
NewReportProcessor.scala:17, took 0.644071 s
Exception in thread "main" org.apache.spark.SparkException: Job aborted due
to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure:
Lost task 0.0 in stage 0.0 (TID 0, localhost): java.io.IOException:
java.lang.RuntimeException: Unable to find proto buffer class
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
at
org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at
org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
at
org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Unable to find proto buffer class
at
com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
at
org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
... 20 more
Caused by: java.lang.ClassNotFoundException:
com.rick.reports.Reports$SensorReports
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at
com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
... 37 more
Driver stacktrace:
at org.apache.spark.scheduler.DAGScheduler.org
$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1214)
at
org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1203)
at
org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1202)
at
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at
org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1202)
at
org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
at
org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
at scala.Option.foreach(Option.scala:236)
at
org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:696)
at
org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1420)
at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
at
org.apache.spark.scheduler.DAGSchedulerEventProcessActor.aroundReceive(DAGScheduler.scala:1375)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at akka.dispatch.Mailbox.run(Mailbox.scala:220)
at
akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
The Proper Report Output:
====================
reports {
network_report {
begin_time: 1424380054789676056
end_time: 1424380054789740740
source: "<some-IP-address>:80"
destination: "<some-IP-address>:46792"
protocol: TCP
stream_id: 3
stream_status: 8
}
http_report {
request {
method: "GET"
etc...
Re: Getting to proto buff classes in Spark Context
Posted by "necro351 ." <ne...@gmail.com>.
Thanks for your response and suggestion, Sean. Setting
"spark.files.userClassPathFirst" didn't fix the problem for me. I am not
very familiar with the Spark and Scala environment, so please correct any
incorrect assumptions or statements I make.
However, I don't believe this to be a classpath visibility issue. I wrote a
small helper method to print out the classpath from both the driver and
worker, and the output is identical. (I'm printing out
System.getProperty("java.class.path") -- is there a better way to do this
or check the class path?)
Furthermore, userClassPathFirst seems to have a detrimental effect on
otherwise working code, which I cannot explain or do not understand.
For example, I created a trivial RDD as such:
val l = List(1, 2, 3)
sc.makeRDD(l).foreach((x: Int) => {
println(x.toString)
})
With userClassPathFirst set, I encounter a java.lang.ClassCastException
trying to execute that code. Is that to be expected?
I created a standalone repository with a very simple Spark job that
exhibits the above issues. I'd appreciate if you could take a look.
https://github.com/vibhav/spark-protobuf
On Tue, Feb 24, 2015 at 2:06 AM Sean Owen <so...@cloudera.com> wrote:
> I assume this is a difference between your local driver classpath and
> remote worker classpath. It may not be a question of whether the class
> is there, but classpath visibility issues. Have you looked into
> settings like spark.files.userClassPathFirst?
>
> On Tue, Feb 24, 2015 at 4:43 AM, necro351 . <ne...@gmail.com> wrote:
> > Hello,
> >
> > I am trying to deserialize some data encoded using proto buff from within
> > Spark and am getting class-not-found exceptions. I have narrowed the
> program
> > down to something very simple that shows the problem exactly (see 'The
> > Program' below) and hopefully someone can tell me the easy fix :)
> >
>
Re: Getting to proto buff classes in Spark Context
Posted by Sean Owen <so...@cloudera.com>.
I assume this is a difference between your local driver classpath and
remote worker classpath. It may not be a question of whether the class
is there, but classpath visibility issues. Have you looked into
settings like spark.files.userClassPathFirst?
On Tue, Feb 24, 2015 at 4:43 AM, necro351 . <ne...@gmail.com> wrote:
> Hello,
>
> I am trying to deserialize some data encoded using proto buff from within
> Spark and am getting class-not-found exceptions. I have narrowed the program
> down to something very simple that shows the problem exactly (see 'The
> Program' below) and hopefully someone can tell me the easy fix :)
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@spark.apache.org
For additional commands, e-mail: user-help@spark.apache.org
Re: Getting to proto buff classes in Spark Context
Posted by "necro351 ." <ne...@gmail.com>.
Sorry Ted, that was me clumsily trying to redact my organization's name
from the computer output (in my e-mail editor). I can assure you that
basically defend7 and rick are the same thing in this case so the class is
present in the jar.
On Mon Feb 23 2015 at 9:39:09 PM Ted Yu <yu...@gmail.com> wrote:
> The classname given in stack trace was com.rick.reports.Reports
>
> In the output from jar command the class is com.defend7.reports.Reports.
>
> FYI
>
> On Mon, Feb 23, 2015 at 9:33 PM, necro351 . <ne...@gmail.com> wrote:
>
>> Hi Ted,
>>
>> Yes it appears to be:
>> rick@ubuntu:~/go/src/rick/sparksprint/containers/tests/StreamingReports$
>> jar tvf
>> ../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar|grep
>> SensorReports
>> 1128 Mon Feb 23 17:34:46 PST 2015
>> com/defend7/reports/Reports$SensorReports$1.class
>> 13507 Mon Feb 23 17:34:46 PST 2015
>> com/defend7/reports/Reports$SensorReports$Builder.class
>> 10640 Mon Feb 23 17:34:46 PST 2015
>> com/defend7/reports/Reports$SensorReports.class
>> 815 Mon Feb 23 17:34:46 PST 2015
>> com/defend7/reports/Reports$SensorReportsOrBuilder.class
>>
>>
>> On Mon Feb 23 2015 at 8:57:18 PM Ted Yu <yu...@gmail.com> wrote:
>>
>>> bq. Caused by: java.lang.ClassNotFoundException: com.rick.reports.
>>> Reports$SensorReports
>>>
>>> Is Reports$SensorReports class in rick-processors-assembly-1.0.jar ?
>>>
>>> Thanks
>>>
>>> On Mon, Feb 23, 2015 at 8:43 PM, necro351 . <ne...@gmail.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> I am trying to deserialize some data encoded using proto buff from
>>>> within Spark and am getting class-not-found exceptions. I have narrowed the
>>>> program down to something very simple that shows the problem exactly (see
>>>> 'The Program' below) and hopefully someone can tell me the easy fix :)
>>>>
>>>> So the situation is I have some proto buff reports in /tmp/reports. I
>>>> also have a Spark project with the below Scala code (under The Program) as
>>>> well as a Java file defining SensorReports all in the same src sub-tree in
>>>> my Spark project. Its built using sbt in the standard way. The Spark job
>>>> reads in the reports from /tmp/reports and then prints them to the console.
>>>> When I build and run my spark job with spark-submit everything works as
>>>> expected and the reports are printed out. When I uncomment the 'XXX'
>>>> variant in the Scala spark program and try to print the reports from within
>>>> a Spark Context I get the class-not-found exceptions. I don't understand
>>>> why. If I get this working then I will want to do more than just print the
>>>> reports from within the Spark Context.
>>>>
>>>> My read of the documentation tells me that my spark job should have
>>>> access to everything in the submitted jar and that jar includes the Java
>>>> code generated by the proto buff library which defines SensorReports. This
>>>> is the spark-submit invocation I use after building my job as an assembly
>>>> with the sbt-assembly plugin:
>>>>
>>>> spark-submit --class com.rick.processors.NewReportProcessor --master
>>>> local[*]
>>>> ../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>>>>
>>>> I have also tried adding the jar programmatically using sc.addJar but
>>>> that does not help. I found a bug from July (
>>>> https://github.com/apache/spark/pull/181) that seems related but it
>>>> went into Spark 1.2.0 (which is what I am currently using) so I don't think
>>>> that's it.
>>>>
>>>> Any ideas? Thanks!
>>>>
>>>> The Program:
>>>> ==========
>>>> package com.rick.processors
>>>>
>>>>
>>>>
>>>> import java.io.File
>>>>
>>>> import java.nio.file.{Path, Files, FileSystems}
>>>>
>>>> import org.apache.spark.{SparkContext, SparkConf}
>>>>
>>>> import com.rick.reports.Reports.SensorReports
>>>>
>>>>
>>>>
>>>> object NewReportProcessor {
>>>>
>>>> private val sparkConf = new SparkConf().setAppName("ReportProcessor")
>>>>
>>>> private val sc = new SparkContext(sparkConf)
>>>>
>>>>
>>>>
>>>> def main(args: Array[String]) = {
>>>>
>>>> val protoBuffsBinary = localFileReports()
>>>>
>>>> val sensorReportsBundles = protoBuffsBinary.map(bundle =>
>>>> SensorReports.parseFrom(bundle))
>>>> // XXX: Printing from within the SparkContext throws
>>>> class-not-found
>>>> // exceptions, why?
>>>>
>>>> // sc.makeRDD(sensorReportsBundles).foreach((x: SensorReports) =>
>>>> println(x.toString))
>>>> sensorReportsBundles.foreach((x: SensorReports) =>
>>>> println(x.toString))
>>>> }
>>>>
>>>>
>>>>
>>>> private def localFileReports() = {
>>>>
>>>> val reportDir = new File("/tmp/reports")
>>>>
>>>> val reportFiles =
>>>> reportDir.listFiles.filter(_.getName.endsWith(".report"))
>>>>
>>>> reportFiles.map(file => {
>>>>
>>>> val path = FileSystems.getDefault().getPath("/tmp/reports",
>>>> file.getName())
>>>> Files.readAllBytes(path)
>>>>
>>>> })
>>>>
>>>> }
>>>>
>>>> }
>>>>
>>>> The Class-not-found exceptions:
>>>> =========================
>>>> Spark assembly has been built with Hive, including Datanucleus jars on
>>>> classpath
>>>> Using Spark's default log4j profile:
>>>> org/apache/spark/log4j-defaults.properties
>>>> 15/02/23 17:35:03 WARN Utils: Your hostname, ubuntu resolves to a
>>>> loopback address: 127.0.1.1; using 192.168.241.128 instead (on interface
>>>> eth0)
>>>> 15/02/23 17:35:03 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
>>>> another address
>>>> 15/02/23 17:35:04 INFO SecurityManager: Changing view acls to: rick
>>>> 15/02/23 17:35:04 INFO SecurityManager: Changing modify acls to: rick
>>>> 15/02/23 17:35:04 INFO SecurityManager: SecurityManager: authentication
>>>> disabled; ui acls disabled; users with view permissions: Set(rick); users
>>>> with modify permissions: Set(rick)
>>>> 15/02/23 17:35:04 INFO Slf4jLogger: Slf4jLogger started
>>>> 15/02/23 17:35:04 INFO Remoting: Starting remoting
>>>> 15/02/23 17:35:04 INFO Remoting: Remoting started; listening on
>>>> addresses :[akka.tcp://sparkDriver@192.168.241.128:38110]
>>>> 15/02/23 17:35:04 INFO Utils: Successfully started service
>>>> 'sparkDriver' on port 38110.
>>>> 15/02/23 17:35:04 INFO SparkEnv: Registering MapOutputTracker
>>>> 15/02/23 17:35:04 INFO SparkEnv: Registering BlockManagerMaster
>>>> 15/02/23 17:35:04 INFO DiskBlockManager: Created local directory at
>>>> /tmp/spark-local-20150223173504-b26c
>>>> 15/02/23 17:35:04 INFO MemoryStore: MemoryStore started with capacity
>>>> 267.3 MB
>>>> 15/02/23 17:35:05 WARN NativeCodeLoader: Unable to load native-hadoop
>>>> library for your platform... using builtin-java classes where applicable
>>>> 15/02/23 17:35:05 INFO HttpFileServer: HTTP File server directory is
>>>> /tmp/spark-c77dbc9a-d626-4991-a9b7-f593acafbe64
>>>> 15/02/23 17:35:05 INFO HttpServer: Starting HTTP Server
>>>> 15/02/23 17:35:05 INFO Utils: Successfully started service 'HTTP file
>>>> server' on port 50950.
>>>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>>>> 4040. Attempting port 4041.
>>>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>>>> 4041. Attempting port 4042.
>>>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>>>> 4042. Attempting port 4043.
>>>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>>>> 4043. Attempting port 4044.
>>>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>>>> 4044. Attempting port 4045.
>>>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>>>> 4045. Attempting port 4046.
>>>> 15/02/23 17:35:06 INFO Utils: Successfully started service 'SparkUI' on
>>>> port 4046.
>>>> 15/02/23 17:35:06 INFO SparkUI: Started SparkUI at
>>>> http://192.168.241.128:4046
>>>> 15/02/23 17:35:06 INFO SparkContext: Added JAR
>>>> file:/home/rick/go/src/rick/sparksprint/containers/tests/StreamingReports/../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>>>> at http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar
>>>> with timestamp 1424741706610
>>>> 15/02/23 17:35:06 INFO AkkaUtils: Connecting to HeartbeatReceiver:
>>>> akka.tcp://sparkDriver@192.168.241.128:38110/user/HeartbeatReceiver
>>>> 15/02/23 17:35:07 INFO NettyBlockTransferService: Server created on
>>>> 57801
>>>> 15/02/23 17:35:07 INFO BlockManagerMaster: Trying to register
>>>> BlockManager
>>>> 15/02/23 17:35:07 INFO BlockManagerMasterActor: Registering block
>>>> manager localhost:57801 with 267.3 MB RAM, BlockManagerId(<driver>,
>>>> localhost, 57801)
>>>> 15/02/23 17:35:07 INFO BlockManagerMaster: Registered BlockManager
>>>> 15/02/23 17:35:07 INFO SparkContext: Starting job: foreach at
>>>> NewReportProcessor.scala:17
>>>> 15/02/23 17:35:07 INFO DAGScheduler: Got job 0 (foreach at
>>>> NewReportProcessor.scala:17) with 1 output partitions (allowLocal=false)
>>>> 15/02/23 17:35:07 INFO DAGScheduler: Final stage: Stage 0(foreach at
>>>> NewReportProcessor.scala:17)
>>>> 15/02/23 17:35:07 INFO DAGScheduler: Parents of final stage: List()
>>>> 15/02/23 17:35:07 INFO DAGScheduler: Missing parents: List()
>>>> 15/02/23 17:35:07 INFO DAGScheduler: Submitting Stage 0
>>>> (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17), which
>>>> has no missing parents
>>>> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1360) called with
>>>> curMem=0, maxMem=280248975
>>>> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0 stored as values
>>>> in memory (estimated size 1360.0 B, free 267.3 MB)
>>>> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1071) called with
>>>> curMem=1360, maxMem=280248975
>>>> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0_piece0 stored as
>>>> bytes in memory (estimated size 1071.0 B, free 267.3 MB)
>>>> 15/02/23 17:35:07 INFO BlockManagerInfo: Added broadcast_0_piece0 in
>>>> memory on localhost:57801 (size: 1071.0 B, free: 267.3 MB)
>>>> 15/02/23 17:35:07 INFO BlockManagerMaster: Updated info of block
>>>> broadcast_0_piece0
>>>> 15/02/23 17:35:07 INFO SparkContext: Created broadcast 0 from broadcast
>>>> at DAGScheduler.scala:838
>>>> 15/02/23 17:35:07 INFO DAGScheduler: Submitting 1 missing tasks from
>>>> Stage 0 (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17)
>>>> 15/02/23 17:35:07 INFO TaskSchedulerImpl: Adding task set 0.0 with 1
>>>> tasks
>>>> 15/02/23 17:35:07 INFO TaskSetManager: Starting task 0.0 in stage 0.0
>>>> (TID 0, localhost, PROCESS_LOCAL, 5587 bytes)
>>>> 15/02/23 17:35:07 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
>>>> 15/02/23 17:35:07 INFO Executor: Fetching
>>>> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar
>>>> with timestamp 1424741706610
>>>> 15/02/23 17:35:08 INFO Utils: Fetching
>>>> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar to
>>>> /tmp/fetchFileTemp2793880583189398319.tmp
>>>> 15/02/23 17:35:08 INFO Executor: Adding
>>>> file:/tmp/spark-bdec3945-52d1-42bf-8b7a-30f14f492a42/rick-processors-assembly-1.0.jar
>>>> to class loader
>>>> 15/02/23 17:35:08 ERROR Executor: Exception in task 0.0 in stage 0.0
>>>> (TID 0)
>>>> java.io.IOException: java.lang.RuntimeException: Unable to find proto
>>>> buffer class
>>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>>>> at
>>>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>>>> at
>>>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>>>> at
>>>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> at java.lang.Thread.run(Thread.java:745)
>>>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>>>> at
>>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>>>> at
>>>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>>>> ... 20 more
>>>> Caused by: java.lang.ClassNotFoundException:
>>>> com.rick.reports.Reports$SensorReports
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>>> at java.lang.Class.forName0(Native Method)
>>>> at java.lang.Class.forName(Class.java:191)
>>>> at
>>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>>>> ... 37 more
>>>> 15/02/23 17:35:08 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID
>>>> 0, localhost): java.io.IOException: java.lang.RuntimeException: Unable to
>>>> find proto buffer class
>>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>>>> at
>>>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>>>> at
>>>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>>>> at
>>>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> at java.lang.Thread.run(Thread.java:745)
>>>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>>>> at
>>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>>>> at
>>>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>>>> ... 20 more
>>>> Caused by: java.lang.ClassNotFoundException:
>>>> com.rick.reports.Reports$SensorReports
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>>> at java.lang.Class.forName0(Native Method)
>>>> at java.lang.Class.forName(Class.java:191)
>>>> at
>>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>>>> ... 37 more
>>>>
>>>> 15/02/23 17:35:08 ERROR TaskSetManager: Task 0 in stage 0.0 failed 1
>>>> times; aborting job
>>>> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose
>>>> tasks have all completed, from pool
>>>> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Cancelling stage 0
>>>> 15/02/23 17:35:08 INFO DAGScheduler: Job 0 failed: foreach at
>>>> NewReportProcessor.scala:17, took 0.644071 s
>>>> Exception in thread "main" org.apache.spark.SparkException: Job aborted
>>>> due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent
>>>> failure: Lost task 0.0 in stage 0.0 (TID 0, localhost):
>>>> java.io.IOException: java.lang.RuntimeException: Unable to find proto
>>>> buffer class
>>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>>>> at
>>>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>>>> at
>>>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>>>> at
>>>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> at java.lang.Thread.run(Thread.java:745)
>>>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>>>> at
>>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>>> at
>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>>> at
>>>> java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>>>> at
>>>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>>>> ... 20 more
>>>> Caused by: java.lang.ClassNotFoundException:
>>>> com.rick.reports.Reports$SensorReports
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>>> at java.lang.Class.forName0(Native Method)
>>>> at java.lang.Class.forName(Class.java:191)
>>>> at
>>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>>>> ... 37 more
>>>>
>>>> Driver stacktrace:
>>>> at org.apache.spark.scheduler.DAGScheduler.org
>>>> $apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1214)
>>>> at
>>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1203)
>>>> at
>>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1202)
>>>> at
>>>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>>> at
>>>> org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1202)
>>>> at
>>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
>>>> at
>>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
>>>> at scala.Option.foreach(Option.scala:236)
>>>> at
>>>> org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:696)
>>>> at
>>>> org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1420)
>>>> at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
>>>> at
>>>> org.apache.spark.scheduler.DAGSchedulerEventProcessActor.aroundReceive(DAGScheduler.scala:1375)
>>>> at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
>>>> at akka.actor.ActorCell.invoke(ActorCell.scala:487)
>>>> at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
>>>> at akka.dispatch.Mailbox.run(Mailbox.scala:220)
>>>> at
>>>> akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
>>>> at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
>>>> at
>>>> scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
>>>> at
>>>> scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
>>>> at
>>>> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
>>>>
>>>> The Proper Report Output:
>>>> ====================
>>>> reports {
>>>> network_report {
>>>> begin_time: 1424380054789676056
>>>> end_time: 1424380054789740740
>>>> source: "<some-IP-address>:80"
>>>> destination: "<some-IP-address>:46792"
>>>> protocol: TCP
>>>> stream_id: 3
>>>> stream_status: 8
>>>> }
>>>> http_report {
>>>> request {
>>>> method: "GET"
>>>> etc...
>>>>
>>>>
>>>
>
Re: Getting to proto buff classes in Spark Context
Posted by Ted Yu <yu...@gmail.com>.
The classname given in stack trace was com.rick.reports.Reports
In the output from jar command the class is com.defend7.reports.Reports.
FYI
On Mon, Feb 23, 2015 at 9:33 PM, necro351 . <ne...@gmail.com> wrote:
> Hi Ted,
>
> Yes it appears to be:
> rick@ubuntu:~/go/src/rick/sparksprint/containers/tests/StreamingReports$
> jar tvf
> ../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar|grep
> SensorReports
> 1128 Mon Feb 23 17:34:46 PST 2015
> com/defend7/reports/Reports$SensorReports$1.class
> 13507 Mon Feb 23 17:34:46 PST 2015
> com/defend7/reports/Reports$SensorReports$Builder.class
> 10640 Mon Feb 23 17:34:46 PST 2015
> com/defend7/reports/Reports$SensorReports.class
> 815 Mon Feb 23 17:34:46 PST 2015
> com/defend7/reports/Reports$SensorReportsOrBuilder.class
>
>
> On Mon Feb 23 2015 at 8:57:18 PM Ted Yu <yu...@gmail.com> wrote:
>
>> bq. Caused by: java.lang.ClassNotFoundException: com.rick.reports.
>> Reports$SensorReports
>>
>> Is Reports$SensorReports class in rick-processors-assembly-1.0.jar ?
>>
>> Thanks
>>
>> On Mon, Feb 23, 2015 at 8:43 PM, necro351 . <ne...@gmail.com> wrote:
>>
>>> Hello,
>>>
>>> I am trying to deserialize some data encoded using proto buff from
>>> within Spark and am getting class-not-found exceptions. I have narrowed the
>>> program down to something very simple that shows the problem exactly (see
>>> 'The Program' below) and hopefully someone can tell me the easy fix :)
>>>
>>> So the situation is I have some proto buff reports in /tmp/reports. I
>>> also have a Spark project with the below Scala code (under The Program) as
>>> well as a Java file defining SensorReports all in the same src sub-tree in
>>> my Spark project. Its built using sbt in the standard way. The Spark job
>>> reads in the reports from /tmp/reports and then prints them to the console.
>>> When I build and run my spark job with spark-submit everything works as
>>> expected and the reports are printed out. When I uncomment the 'XXX'
>>> variant in the Scala spark program and try to print the reports from within
>>> a Spark Context I get the class-not-found exceptions. I don't understand
>>> why. If I get this working then I will want to do more than just print the
>>> reports from within the Spark Context.
>>>
>>> My read of the documentation tells me that my spark job should have
>>> access to everything in the submitted jar and that jar includes the Java
>>> code generated by the proto buff library which defines SensorReports. This
>>> is the spark-submit invocation I use after building my job as an assembly
>>> with the sbt-assembly plugin:
>>>
>>> spark-submit --class com.rick.processors.NewReportProcessor --master
>>> local[*]
>>> ../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>>>
>>> I have also tried adding the jar programmatically using sc.addJar but
>>> that does not help. I found a bug from July (
>>> https://github.com/apache/spark/pull/181) that seems related but it
>>> went into Spark 1.2.0 (which is what I am currently using) so I don't think
>>> that's it.
>>>
>>> Any ideas? Thanks!
>>>
>>> The Program:
>>> ==========
>>> package com.rick.processors
>>>
>>>
>>>
>>> import java.io.File
>>>
>>> import java.nio.file.{Path, Files, FileSystems}
>>>
>>> import org.apache.spark.{SparkContext, SparkConf}
>>>
>>> import com.rick.reports.Reports.SensorReports
>>>
>>>
>>>
>>> object NewReportProcessor {
>>>
>>> private val sparkConf = new SparkConf().setAppName("ReportProcessor")
>>>
>>> private val sc = new SparkContext(sparkConf)
>>>
>>>
>>>
>>> def main(args: Array[String]) = {
>>>
>>> val protoBuffsBinary = localFileReports()
>>>
>>> val sensorReportsBundles = protoBuffsBinary.map(bundle =>
>>> SensorReports.parseFrom(bundle))
>>> // XXX: Printing from within the SparkContext throws class-not-found
>>>
>>> // exceptions, why?
>>>
>>> // sc.makeRDD(sensorReportsBundles).foreach((x: SensorReports) =>
>>> println(x.toString))
>>> sensorReportsBundles.foreach((x: SensorReports) =>
>>> println(x.toString))
>>> }
>>>
>>>
>>>
>>> private def localFileReports() = {
>>>
>>> val reportDir = new File("/tmp/reports")
>>>
>>> val reportFiles =
>>> reportDir.listFiles.filter(_.getName.endsWith(".report"))
>>>
>>> reportFiles.map(file => {
>>>
>>> val path = FileSystems.getDefault().getPath("/tmp/reports",
>>> file.getName())
>>> Files.readAllBytes(path)
>>>
>>> })
>>>
>>> }
>>>
>>> }
>>>
>>> The Class-not-found exceptions:
>>> =========================
>>> Spark assembly has been built with Hive, including Datanucleus jars on
>>> classpath
>>> Using Spark's default log4j profile:
>>> org/apache/spark/log4j-defaults.properties
>>> 15/02/23 17:35:03 WARN Utils: Your hostname, ubuntu resolves to a
>>> loopback address: 127.0.1.1; using 192.168.241.128 instead (on interface
>>> eth0)
>>> 15/02/23 17:35:03 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
>>> another address
>>> 15/02/23 17:35:04 INFO SecurityManager: Changing view acls to: rick
>>> 15/02/23 17:35:04 INFO SecurityManager: Changing modify acls to: rick
>>> 15/02/23 17:35:04 INFO SecurityManager: SecurityManager: authentication
>>> disabled; ui acls disabled; users with view permissions: Set(rick); users
>>> with modify permissions: Set(rick)
>>> 15/02/23 17:35:04 INFO Slf4jLogger: Slf4jLogger started
>>> 15/02/23 17:35:04 INFO Remoting: Starting remoting
>>> 15/02/23 17:35:04 INFO Remoting: Remoting started; listening on
>>> addresses :[akka.tcp://sparkDriver@192.168.241.128:38110]
>>> 15/02/23 17:35:04 INFO Utils: Successfully started service 'sparkDriver'
>>> on port 38110.
>>> 15/02/23 17:35:04 INFO SparkEnv: Registering MapOutputTracker
>>> 15/02/23 17:35:04 INFO SparkEnv: Registering BlockManagerMaster
>>> 15/02/23 17:35:04 INFO DiskBlockManager: Created local directory at
>>> /tmp/spark-local-20150223173504-b26c
>>> 15/02/23 17:35:04 INFO MemoryStore: MemoryStore started with capacity
>>> 267.3 MB
>>> 15/02/23 17:35:05 WARN NativeCodeLoader: Unable to load native-hadoop
>>> library for your platform... using builtin-java classes where applicable
>>> 15/02/23 17:35:05 INFO HttpFileServer: HTTP File server directory is
>>> /tmp/spark-c77dbc9a-d626-4991-a9b7-f593acafbe64
>>> 15/02/23 17:35:05 INFO HttpServer: Starting HTTP Server
>>> 15/02/23 17:35:05 INFO Utils: Successfully started service 'HTTP file
>>> server' on port 50950.
>>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>>> 4040. Attempting port 4041.
>>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>>> 4041. Attempting port 4042.
>>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>>> 4042. Attempting port 4043.
>>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>>> 4043. Attempting port 4044.
>>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>>> 4044. Attempting port 4045.
>>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>>> 4045. Attempting port 4046.
>>> 15/02/23 17:35:06 INFO Utils: Successfully started service 'SparkUI' on
>>> port 4046.
>>> 15/02/23 17:35:06 INFO SparkUI: Started SparkUI at
>>> http://192.168.241.128:4046
>>> 15/02/23 17:35:06 INFO SparkContext: Added JAR
>>> file:/home/rick/go/src/rick/sparksprint/containers/tests/StreamingReports/../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>>> at http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar
>>> with timestamp 1424741706610
>>> 15/02/23 17:35:06 INFO AkkaUtils: Connecting to HeartbeatReceiver:
>>> akka.tcp://sparkDriver@192.168.241.128:38110/user/HeartbeatReceiver
>>> 15/02/23 17:35:07 INFO NettyBlockTransferService: Server created on 57801
>>> 15/02/23 17:35:07 INFO BlockManagerMaster: Trying to register
>>> BlockManager
>>> 15/02/23 17:35:07 INFO BlockManagerMasterActor: Registering block
>>> manager localhost:57801 with 267.3 MB RAM, BlockManagerId(<driver>,
>>> localhost, 57801)
>>> 15/02/23 17:35:07 INFO BlockManagerMaster: Registered BlockManager
>>> 15/02/23 17:35:07 INFO SparkContext: Starting job: foreach at
>>> NewReportProcessor.scala:17
>>> 15/02/23 17:35:07 INFO DAGScheduler: Got job 0 (foreach at
>>> NewReportProcessor.scala:17) with 1 output partitions (allowLocal=false)
>>> 15/02/23 17:35:07 INFO DAGScheduler: Final stage: Stage 0(foreach at
>>> NewReportProcessor.scala:17)
>>> 15/02/23 17:35:07 INFO DAGScheduler: Parents of final stage: List()
>>> 15/02/23 17:35:07 INFO DAGScheduler: Missing parents: List()
>>> 15/02/23 17:35:07 INFO DAGScheduler: Submitting Stage 0
>>> (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17), which
>>> has no missing parents
>>> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1360) called with
>>> curMem=0, maxMem=280248975
>>> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0 stored as values
>>> in memory (estimated size 1360.0 B, free 267.3 MB)
>>> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1071) called with
>>> curMem=1360, maxMem=280248975
>>> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0_piece0 stored as
>>> bytes in memory (estimated size 1071.0 B, free 267.3 MB)
>>> 15/02/23 17:35:07 INFO BlockManagerInfo: Added broadcast_0_piece0 in
>>> memory on localhost:57801 (size: 1071.0 B, free: 267.3 MB)
>>> 15/02/23 17:35:07 INFO BlockManagerMaster: Updated info of block
>>> broadcast_0_piece0
>>> 15/02/23 17:35:07 INFO SparkContext: Created broadcast 0 from broadcast
>>> at DAGScheduler.scala:838
>>> 15/02/23 17:35:07 INFO DAGScheduler: Submitting 1 missing tasks from
>>> Stage 0 (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17)
>>> 15/02/23 17:35:07 INFO TaskSchedulerImpl: Adding task set 0.0 with 1
>>> tasks
>>> 15/02/23 17:35:07 INFO TaskSetManager: Starting task 0.0 in stage 0.0
>>> (TID 0, localhost, PROCESS_LOCAL, 5587 bytes)
>>> 15/02/23 17:35:07 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
>>> 15/02/23 17:35:07 INFO Executor: Fetching
>>> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar with
>>> timestamp 1424741706610
>>> 15/02/23 17:35:08 INFO Utils: Fetching
>>> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar to
>>> /tmp/fetchFileTemp2793880583189398319.tmp
>>> 15/02/23 17:35:08 INFO Executor: Adding
>>> file:/tmp/spark-bdec3945-52d1-42bf-8b7a-30f14f492a42/rick-processors-assembly-1.0.jar
>>> to class loader
>>> 15/02/23 17:35:08 ERROR Executor: Exception in task 0.0 in stage 0.0
>>> (TID 0)
>>> java.io.IOException: java.lang.RuntimeException: Unable to find proto
>>> buffer class
>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>>> at
>>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>>> at
>>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>>> at
>>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:745)
>>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>>> at
>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at
>>> java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>>> at
>>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>>> ... 20 more
>>> Caused by: java.lang.ClassNotFoundException:
>>> com.rick.reports.Reports$SensorReports
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>> at java.lang.Class.forName0(Native Method)
>>> at java.lang.Class.forName(Class.java:191)
>>> at
>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>>> ... 37 more
>>> 15/02/23 17:35:08 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID
>>> 0, localhost): java.io.IOException: java.lang.RuntimeException: Unable to
>>> find proto buffer class
>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>>> at
>>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>>> at
>>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>>> at
>>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:745)
>>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>>> at
>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at
>>> java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>>> at
>>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>>> ... 20 more
>>> Caused by: java.lang.ClassNotFoundException:
>>> com.rick.reports.Reports$SensorReports
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>> at java.lang.Class.forName0(Native Method)
>>> at java.lang.Class.forName(Class.java:191)
>>> at
>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>>> ... 37 more
>>>
>>> 15/02/23 17:35:08 ERROR TaskSetManager: Task 0 in stage 0.0 failed 1
>>> times; aborting job
>>> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose
>>> tasks have all completed, from pool
>>> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Cancelling stage 0
>>> 15/02/23 17:35:08 INFO DAGScheduler: Job 0 failed: foreach at
>>> NewReportProcessor.scala:17, took 0.644071 s
>>> Exception in thread "main" org.apache.spark.SparkException: Job aborted
>>> due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent
>>> failure: Lost task 0.0 in stage 0.0 (TID 0, localhost):
>>> java.io.IOException: java.lang.RuntimeException: Unable to find proto
>>> buffer class
>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>>> at
>>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>>> at
>>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>>> at
>>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:745)
>>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>>> at
>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>>> at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>>> at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>>> at
>>> java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>>> at
>>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>>> ... 20 more
>>> Caused by: java.lang.ClassNotFoundException:
>>> com.rick.reports.Reports$SensorReports
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>> at java.lang.Class.forName0(Native Method)
>>> at java.lang.Class.forName(Class.java:191)
>>> at
>>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>>> ... 37 more
>>>
>>> Driver stacktrace:
>>> at org.apache.spark.scheduler.DAGScheduler.org
>>> $apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1214)
>>> at
>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1203)
>>> at
>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1202)
>>> at
>>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>> at
>>> org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1202)
>>> at
>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
>>> at
>>> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
>>> at scala.Option.foreach(Option.scala:236)
>>> at
>>> org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:696)
>>> at
>>> org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1420)
>>> at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
>>> at
>>> org.apache.spark.scheduler.DAGSchedulerEventProcessActor.aroundReceive(DAGScheduler.scala:1375)
>>> at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
>>> at akka.actor.ActorCell.invoke(ActorCell.scala:487)
>>> at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
>>> at akka.dispatch.Mailbox.run(Mailbox.scala:220)
>>> at
>>> akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
>>> at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
>>> at
>>> scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
>>> at
>>> scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
>>> at
>>> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
>>>
>>> The Proper Report Output:
>>> ====================
>>> reports {
>>> network_report {
>>> begin_time: 1424380054789676056
>>> end_time: 1424380054789740740
>>> source: "<some-IP-address>:80"
>>> destination: "<some-IP-address>:46792"
>>> protocol: TCP
>>> stream_id: 3
>>> stream_status: 8
>>> }
>>> http_report {
>>> request {
>>> method: "GET"
>>> etc...
>>>
>>>
>>
Re: Getting to proto buff classes in Spark Context
Posted by "necro351 ." <ne...@gmail.com>.
Hi Ted,
Yes it appears to be:
rick@ubuntu:~/go/src/rick/sparksprint/containers/tests/StreamingReports$
jar tvf
../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar|grep
SensorReports
1128 Mon Feb 23 17:34:46 PST 2015
com/defend7/reports/Reports$SensorReports$1.class
13507 Mon Feb 23 17:34:46 PST 2015
com/defend7/reports/Reports$SensorReports$Builder.class
10640 Mon Feb 23 17:34:46 PST 2015
com/defend7/reports/Reports$SensorReports.class
815 Mon Feb 23 17:34:46 PST 2015
com/defend7/reports/Reports$SensorReportsOrBuilder.class
On Mon Feb 23 2015 at 8:57:18 PM Ted Yu <yu...@gmail.com> wrote:
> bq. Caused by: java.lang.ClassNotFoundException: com.rick.reports.Reports$
> SensorReports
>
> Is Reports$SensorReports class in rick-processors-assembly-1.0.jar ?
>
> Thanks
>
> On Mon, Feb 23, 2015 at 8:43 PM, necro351 . <ne...@gmail.com> wrote:
>
>> Hello,
>>
>> I am trying to deserialize some data encoded using proto buff from within
>> Spark and am getting class-not-found exceptions. I have narrowed the
>> program down to something very simple that shows the problem exactly (see
>> 'The Program' below) and hopefully someone can tell me the easy fix :)
>>
>> So the situation is I have some proto buff reports in /tmp/reports. I
>> also have a Spark project with the below Scala code (under The Program) as
>> well as a Java file defining SensorReports all in the same src sub-tree in
>> my Spark project. Its built using sbt in the standard way. The Spark job
>> reads in the reports from /tmp/reports and then prints them to the console.
>> When I build and run my spark job with spark-submit everything works as
>> expected and the reports are printed out. When I uncomment the 'XXX'
>> variant in the Scala spark program and try to print the reports from within
>> a Spark Context I get the class-not-found exceptions. I don't understand
>> why. If I get this working then I will want to do more than just print the
>> reports from within the Spark Context.
>>
>> My read of the documentation tells me that my spark job should have
>> access to everything in the submitted jar and that jar includes the Java
>> code generated by the proto buff library which defines SensorReports. This
>> is the spark-submit invocation I use after building my job as an assembly
>> with the sbt-assembly plugin:
>>
>> spark-submit --class com.rick.processors.NewReportProcessor --master
>> local[*]
>> ../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>>
>> I have also tried adding the jar programmatically using sc.addJar but
>> that does not help. I found a bug from July (
>> https://github.com/apache/spark/pull/181) that seems related but it went
>> into Spark 1.2.0 (which is what I am currently using) so I don't think
>> that's it.
>>
>> Any ideas? Thanks!
>>
>> The Program:
>> ==========
>> package com.rick.processors
>>
>>
>>
>> import java.io.File
>>
>> import java.nio.file.{Path, Files, FileSystems}
>>
>> import org.apache.spark.{SparkContext, SparkConf}
>>
>> import com.rick.reports.Reports.SensorReports
>>
>>
>>
>> object NewReportProcessor {
>>
>> private val sparkConf = new SparkConf().setAppName("ReportProcessor")
>>
>> private val sc = new SparkContext(sparkConf)
>>
>>
>>
>> def main(args: Array[String]) = {
>>
>> val protoBuffsBinary = localFileReports()
>>
>> val sensorReportsBundles = protoBuffsBinary.map(bundle =>
>> SensorReports.parseFrom(bundle))
>> // XXX: Printing from within the SparkContext throws class-not-found
>>
>> // exceptions, why?
>>
>> // sc.makeRDD(sensorReportsBundles).foreach((x: SensorReports) =>
>> println(x.toString))
>> sensorReportsBundles.foreach((x: SensorReports) =>
>> println(x.toString))
>> }
>>
>>
>>
>> private def localFileReports() = {
>>
>> val reportDir = new File("/tmp/reports")
>>
>> val reportFiles =
>> reportDir.listFiles.filter(_.getName.endsWith(".report"))
>>
>> reportFiles.map(file => {
>>
>> val path = FileSystems.getDefault().getPath("/tmp/reports",
>> file.getName())
>> Files.readAllBytes(path)
>>
>> })
>>
>> }
>>
>> }
>>
>> The Class-not-found exceptions:
>> =========================
>> Spark assembly has been built with Hive, including Datanucleus jars on
>> classpath
>> Using Spark's default log4j profile:
>> org/apache/spark/log4j-defaults.properties
>> 15/02/23 17:35:03 WARN Utils: Your hostname, ubuntu resolves to a
>> loopback address: 127.0.1.1; using 192.168.241.128 instead (on interface
>> eth0)
>> 15/02/23 17:35:03 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
>> another address
>> 15/02/23 17:35:04 INFO SecurityManager: Changing view acls to: rick
>> 15/02/23 17:35:04 INFO SecurityManager: Changing modify acls to: rick
>> 15/02/23 17:35:04 INFO SecurityManager: SecurityManager: authentication
>> disabled; ui acls disabled; users with view permissions: Set(rick); users
>> with modify permissions: Set(rick)
>> 15/02/23 17:35:04 INFO Slf4jLogger: Slf4jLogger started
>> 15/02/23 17:35:04 INFO Remoting: Starting remoting
>> 15/02/23 17:35:04 INFO Remoting: Remoting started; listening on addresses
>> :[akka.tcp://sparkDriver@192.168.241.128:38110]
>> 15/02/23 17:35:04 INFO Utils: Successfully started service 'sparkDriver'
>> on port 38110.
>> 15/02/23 17:35:04 INFO SparkEnv: Registering MapOutputTracker
>> 15/02/23 17:35:04 INFO SparkEnv: Registering BlockManagerMaster
>> 15/02/23 17:35:04 INFO DiskBlockManager: Created local directory at
>> /tmp/spark-local-20150223173504-b26c
>> 15/02/23 17:35:04 INFO MemoryStore: MemoryStore started with capacity
>> 267.3 MB
>> 15/02/23 17:35:05 WARN NativeCodeLoader: Unable to load native-hadoop
>> library for your platform... using builtin-java classes where applicable
>> 15/02/23 17:35:05 INFO HttpFileServer: HTTP File server directory is
>> /tmp/spark-c77dbc9a-d626-4991-a9b7-f593acafbe64
>> 15/02/23 17:35:05 INFO HttpServer: Starting HTTP Server
>> 15/02/23 17:35:05 INFO Utils: Successfully started service 'HTTP file
>> server' on port 50950.
>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>> 4040. Attempting port 4041.
>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>> 4041. Attempting port 4042.
>> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
>> 4042. Attempting port 4043.
>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>> 4043. Attempting port 4044.
>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>> 4044. Attempting port 4045.
>> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
>> 4045. Attempting port 4046.
>> 15/02/23 17:35:06 INFO Utils: Successfully started service 'SparkUI' on
>> port 4046.
>> 15/02/23 17:35:06 INFO SparkUI: Started SparkUI at
>> http://192.168.241.128:4046
>> 15/02/23 17:35:06 INFO SparkContext: Added JAR
>> file:/home/rick/go/src/rick/sparksprint/containers/tests/StreamingReports/../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>> at http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar
>> with timestamp 1424741706610
>> 15/02/23 17:35:06 INFO AkkaUtils: Connecting to HeartbeatReceiver:
>> akka.tcp://sparkDriver@192.168.241.128:38110/user/HeartbeatReceiver
>> 15/02/23 17:35:07 INFO NettyBlockTransferService: Server created on 57801
>> 15/02/23 17:35:07 INFO BlockManagerMaster: Trying to register BlockManager
>> 15/02/23 17:35:07 INFO BlockManagerMasterActor: Registering block manager
>> localhost:57801 with 267.3 MB RAM, BlockManagerId(<driver>, localhost,
>> 57801)
>> 15/02/23 17:35:07 INFO BlockManagerMaster: Registered BlockManager
>> 15/02/23 17:35:07 INFO SparkContext: Starting job: foreach at
>> NewReportProcessor.scala:17
>> 15/02/23 17:35:07 INFO DAGScheduler: Got job 0 (foreach at
>> NewReportProcessor.scala:17) with 1 output partitions (allowLocal=false)
>> 15/02/23 17:35:07 INFO DAGScheduler: Final stage: Stage 0(foreach at
>> NewReportProcessor.scala:17)
>> 15/02/23 17:35:07 INFO DAGScheduler: Parents of final stage: List()
>> 15/02/23 17:35:07 INFO DAGScheduler: Missing parents: List()
>> 15/02/23 17:35:07 INFO DAGScheduler: Submitting Stage 0
>> (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17), which
>> has no missing parents
>> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1360) called with
>> curMem=0, maxMem=280248975
>> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0 stored as values in
>> memory (estimated size 1360.0 B, free 267.3 MB)
>> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1071) called with
>> curMem=1360, maxMem=280248975
>> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0_piece0 stored as
>> bytes in memory (estimated size 1071.0 B, free 267.3 MB)
>> 15/02/23 17:35:07 INFO BlockManagerInfo: Added broadcast_0_piece0 in
>> memory on localhost:57801 (size: 1071.0 B, free: 267.3 MB)
>> 15/02/23 17:35:07 INFO BlockManagerMaster: Updated info of block
>> broadcast_0_piece0
>> 15/02/23 17:35:07 INFO SparkContext: Created broadcast 0 from broadcast
>> at DAGScheduler.scala:838
>> 15/02/23 17:35:07 INFO DAGScheduler: Submitting 1 missing tasks from
>> Stage 0 (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17)
>> 15/02/23 17:35:07 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks
>> 15/02/23 17:35:07 INFO TaskSetManager: Starting task 0.0 in stage 0.0
>> (TID 0, localhost, PROCESS_LOCAL, 5587 bytes)
>> 15/02/23 17:35:07 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
>> 15/02/23 17:35:07 INFO Executor: Fetching
>> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar with
>> timestamp 1424741706610
>> 15/02/23 17:35:08 INFO Utils: Fetching
>> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar to
>> /tmp/fetchFileTemp2793880583189398319.tmp
>> 15/02/23 17:35:08 INFO Executor: Adding
>> file:/tmp/spark-bdec3945-52d1-42bf-8b7a-30f14f492a42/rick-processors-assembly-1.0.jar
>> to class loader
>> 15/02/23 17:35:08 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID
>> 0)
>> java.io.IOException: java.lang.RuntimeException: Unable to find proto
>> buffer class
>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>> at
>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>> at
>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>> at
>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>> at
>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at
>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>> at
>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>> ... 20 more
>> Caused by: java.lang.ClassNotFoundException:
>> com.rick.reports.Reports$SensorReports
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>> at java.lang.Class.forName0(Native Method)
>> at java.lang.Class.forName(Class.java:191)
>> at
>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>> ... 37 more
>> 15/02/23 17:35:08 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0,
>> localhost): java.io.IOException: java.lang.RuntimeException: Unable to find
>> proto buffer class
>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>> at
>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>> at
>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>> at
>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>> at
>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at
>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>> at
>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>> ... 20 more
>> Caused by: java.lang.ClassNotFoundException:
>> com.rick.reports.Reports$SensorReports
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>> at java.lang.Class.forName0(Native Method)
>> at java.lang.Class.forName(Class.java:191)
>> at
>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>> ... 37 more
>>
>> 15/02/23 17:35:08 ERROR TaskSetManager: Task 0 in stage 0.0 failed 1
>> times; aborting job
>> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose
>> tasks have all completed, from pool
>> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Cancelling stage 0
>> 15/02/23 17:35:08 INFO DAGScheduler: Job 0 failed: foreach at
>> NewReportProcessor.scala:17, took 0.644071 s
>> Exception in thread "main" org.apache.spark.SparkException: Job aborted
>> due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent
>> failure: Lost task 0.0 in stage 0.0 (TID 0, localhost):
>> java.io.IOException: java.lang.RuntimeException: Unable to find proto
>> buffer class
>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
>> at
>> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>> at
>> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
>> at
>> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
>> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
>> at
>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at
>> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
>> at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
>> at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
>> at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
>> at
>> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
>> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
>> ... 20 more
>> Caused by: java.lang.ClassNotFoundException:
>> com.rick.reports.Reports$SensorReports
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>> at java.lang.Class.forName0(Native Method)
>> at java.lang.Class.forName(Class.java:191)
>> at
>> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
>> ... 37 more
>>
>> Driver stacktrace:
>> at org.apache.spark.scheduler.DAGScheduler.org
>> $apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1214)
>> at
>> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1203)
>> at
>> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1202)
>> at
>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>> at
>> org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1202)
>> at
>> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
>> at
>> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
>> at scala.Option.foreach(Option.scala:236)
>> at
>> org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:696)
>> at
>> org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1420)
>> at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
>> at
>> org.apache.spark.scheduler.DAGSchedulerEventProcessActor.aroundReceive(DAGScheduler.scala:1375)
>> at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
>> at akka.actor.ActorCell.invoke(ActorCell.scala:487)
>> at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
>> at akka.dispatch.Mailbox.run(Mailbox.scala:220)
>> at
>> akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
>> at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
>> at
>> scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
>> at
>> scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
>> at
>> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
>>
>> The Proper Report Output:
>> ====================
>> reports {
>> network_report {
>> begin_time: 1424380054789676056
>> end_time: 1424380054789740740
>> source: "<some-IP-address>:80"
>> destination: "<some-IP-address>:46792"
>> protocol: TCP
>> stream_id: 3
>> stream_status: 8
>> }
>> http_report {
>> request {
>> method: "GET"
>> etc...
>>
>>
>
Re: Getting to proto buff classes in Spark Context
Posted by Ted Yu <yu...@gmail.com>.
bq. Caused by: java.lang.ClassNotFoundException: com.rick.reports.Reports$
SensorReports
Is Reports$SensorReports class in rick-processors-assembly-1.0.jar ?
Thanks
On Mon, Feb 23, 2015 at 8:43 PM, necro351 . <ne...@gmail.com> wrote:
> Hello,
>
> I am trying to deserialize some data encoded using proto buff from within
> Spark and am getting class-not-found exceptions. I have narrowed the
> program down to something very simple that shows the problem exactly (see
> 'The Program' below) and hopefully someone can tell me the easy fix :)
>
> So the situation is I have some proto buff reports in /tmp/reports. I also
> have a Spark project with the below Scala code (under The Program) as well
> as a Java file defining SensorReports all in the same src sub-tree in my
> Spark project. Its built using sbt in the standard way. The Spark job reads
> in the reports from /tmp/reports and then prints them to the console. When
> I build and run my spark job with spark-submit everything works as expected
> and the reports are printed out. When I uncomment the 'XXX' variant in the
> Scala spark program and try to print the reports from within a Spark
> Context I get the class-not-found exceptions. I don't understand why. If I
> get this working then I will want to do more than just print the reports
> from within the Spark Context.
>
> My read of the documentation tells me that my spark job should have access
> to everything in the submitted jar and that jar includes the Java code
> generated by the proto buff library which defines SensorReports. This is
> the spark-submit invocation I use after building my job as an assembly with
> the sbt-assembly plugin:
>
> spark-submit --class com.rick.processors.NewReportProcessor --master
> local[*]
> ../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
>
> I have also tried adding the jar programmatically using sc.addJar but that
> does not help. I found a bug from July (
> https://github.com/apache/spark/pull/181) that seems related but it went
> into Spark 1.2.0 (which is what I am currently using) so I don't think
> that's it.
>
> Any ideas? Thanks!
>
> The Program:
> ==========
> package com.rick.processors
>
>
>
> import java.io.File
>
> import java.nio.file.{Path, Files, FileSystems}
>
> import org.apache.spark.{SparkContext, SparkConf}
>
> import com.rick.reports.Reports.SensorReports
>
>
>
> object NewReportProcessor {
>
> private val sparkConf = new SparkConf().setAppName("ReportProcessor")
>
> private val sc = new SparkContext(sparkConf)
>
>
>
> def main(args: Array[String]) = {
>
> val protoBuffsBinary = localFileReports()
>
> val sensorReportsBundles = protoBuffsBinary.map(bundle =>
> SensorReports.parseFrom(bundle))
> // XXX: Printing from within the SparkContext throws class-not-found
>
> // exceptions, why?
>
> // sc.makeRDD(sensorReportsBundles).foreach((x: SensorReports) =>
> println(x.toString))
> sensorReportsBundles.foreach((x: SensorReports) =>
> println(x.toString))
> }
>
>
>
> private def localFileReports() = {
>
> val reportDir = new File("/tmp/reports")
>
> val reportFiles =
> reportDir.listFiles.filter(_.getName.endsWith(".report"))
>
> reportFiles.map(file => {
>
> val path = FileSystems.getDefault().getPath("/tmp/reports",
> file.getName())
> Files.readAllBytes(path)
>
> })
>
> }
>
> }
>
> The Class-not-found exceptions:
> =========================
> Spark assembly has been built with Hive, including Datanucleus jars on
> classpath
> Using Spark's default log4j profile:
> org/apache/spark/log4j-defaults.properties
> 15/02/23 17:35:03 WARN Utils: Your hostname, ubuntu resolves to a loopback
> address: 127.0.1.1; using 192.168.241.128 instead (on interface eth0)
> 15/02/23 17:35:03 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to
> another address
> 15/02/23 17:35:04 INFO SecurityManager: Changing view acls to: rick
> 15/02/23 17:35:04 INFO SecurityManager: Changing modify acls to: rick
> 15/02/23 17:35:04 INFO SecurityManager: SecurityManager: authentication
> disabled; ui acls disabled; users with view permissions: Set(rick); users
> with modify permissions: Set(rick)
> 15/02/23 17:35:04 INFO Slf4jLogger: Slf4jLogger started
> 15/02/23 17:35:04 INFO Remoting: Starting remoting
> 15/02/23 17:35:04 INFO Remoting: Remoting started; listening on addresses
> :[akka.tcp://sparkDriver@192.168.241.128:38110]
> 15/02/23 17:35:04 INFO Utils: Successfully started service 'sparkDriver'
> on port 38110.
> 15/02/23 17:35:04 INFO SparkEnv: Registering MapOutputTracker
> 15/02/23 17:35:04 INFO SparkEnv: Registering BlockManagerMaster
> 15/02/23 17:35:04 INFO DiskBlockManager: Created local directory at
> /tmp/spark-local-20150223173504-b26c
> 15/02/23 17:35:04 INFO MemoryStore: MemoryStore started with capacity
> 267.3 MB
> 15/02/23 17:35:05 WARN NativeCodeLoader: Unable to load native-hadoop
> library for your platform... using builtin-java classes where applicable
> 15/02/23 17:35:05 INFO HttpFileServer: HTTP File server directory is
> /tmp/spark-c77dbc9a-d626-4991-a9b7-f593acafbe64
> 15/02/23 17:35:05 INFO HttpServer: Starting HTTP Server
> 15/02/23 17:35:05 INFO Utils: Successfully started service 'HTTP file
> server' on port 50950.
> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
> 4040. Attempting port 4041.
> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
> 4041. Attempting port 4042.
> 15/02/23 17:35:05 WARN Utils: Service 'SparkUI' could not bind on port
> 4042. Attempting port 4043.
> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
> 4043. Attempting port 4044.
> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
> 4044. Attempting port 4045.
> 15/02/23 17:35:06 WARN Utils: Service 'SparkUI' could not bind on port
> 4045. Attempting port 4046.
> 15/02/23 17:35:06 INFO Utils: Successfully started service 'SparkUI' on
> port 4046.
> 15/02/23 17:35:06 INFO SparkUI: Started SparkUI at
> http://192.168.241.128:4046
> 15/02/23 17:35:06 INFO SparkContext: Added JAR
> file:/home/rick/go/src/rick/sparksprint/containers/tests/StreamingReports/../../../analyzer/spark/target/scala-2.10/rick-processors-assembly-1.0.jar
> at http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar
> with timestamp 1424741706610
> 15/02/23 17:35:06 INFO AkkaUtils: Connecting to HeartbeatReceiver:
> akka.tcp://sparkDriver@192.168.241.128:38110/user/HeartbeatReceiver
> 15/02/23 17:35:07 INFO NettyBlockTransferService: Server created on 57801
> 15/02/23 17:35:07 INFO BlockManagerMaster: Trying to register BlockManager
> 15/02/23 17:35:07 INFO BlockManagerMasterActor: Registering block manager
> localhost:57801 with 267.3 MB RAM, BlockManagerId(<driver>, localhost,
> 57801)
> 15/02/23 17:35:07 INFO BlockManagerMaster: Registered BlockManager
> 15/02/23 17:35:07 INFO SparkContext: Starting job: foreach at
> NewReportProcessor.scala:17
> 15/02/23 17:35:07 INFO DAGScheduler: Got job 0 (foreach at
> NewReportProcessor.scala:17) with 1 output partitions (allowLocal=false)
> 15/02/23 17:35:07 INFO DAGScheduler: Final stage: Stage 0(foreach at
> NewReportProcessor.scala:17)
> 15/02/23 17:35:07 INFO DAGScheduler: Parents of final stage: List()
> 15/02/23 17:35:07 INFO DAGScheduler: Missing parents: List()
> 15/02/23 17:35:07 INFO DAGScheduler: Submitting Stage 0
> (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17), which
> has no missing parents
> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1360) called with
> curMem=0, maxMem=280248975
> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0 stored as values in
> memory (estimated size 1360.0 B, free 267.3 MB)
> 15/02/23 17:35:07 INFO MemoryStore: ensureFreeSpace(1071) called with
> curMem=1360, maxMem=280248975
> 15/02/23 17:35:07 INFO MemoryStore: Block broadcast_0_piece0 stored as
> bytes in memory (estimated size 1071.0 B, free 267.3 MB)
> 15/02/23 17:35:07 INFO BlockManagerInfo: Added broadcast_0_piece0 in
> memory on localhost:57801 (size: 1071.0 B, free: 267.3 MB)
> 15/02/23 17:35:07 INFO BlockManagerMaster: Updated info of block
> broadcast_0_piece0
> 15/02/23 17:35:07 INFO SparkContext: Created broadcast 0 from broadcast at
> DAGScheduler.scala:838
> 15/02/23 17:35:07 INFO DAGScheduler: Submitting 1 missing tasks from Stage
> 0 (ParallelCollectionRDD[0] at makeRDD at NewReportProcessor.scala:17)
> 15/02/23 17:35:07 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks
> 15/02/23 17:35:07 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID
> 0, localhost, PROCESS_LOCAL, 5587 bytes)
> 15/02/23 17:35:07 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
> 15/02/23 17:35:07 INFO Executor: Fetching
> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar with
> timestamp 1424741706610
> 15/02/23 17:35:08 INFO Utils: Fetching
> http://192.168.241.128:50950/jars/rick-processors-assembly-1.0.jar to
> /tmp/fetchFileTemp2793880583189398319.tmp
> 15/02/23 17:35:08 INFO Executor: Adding
> file:/tmp/spark-bdec3945-52d1-42bf-8b7a-30f14f492a42/rick-processors-assembly-1.0.jar
> to class loader
> 15/02/23 17:35:08 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID
> 0)
> java.io.IOException: java.lang.RuntimeException: Unable to find proto
> buffer class
> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
> at
> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
> at
> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
> at
> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
> at
> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
> at
> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
> ... 20 more
> Caused by: java.lang.ClassNotFoundException:
> com.rick.reports.Reports$SensorReports
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:191)
> at
> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
> ... 37 more
> 15/02/23 17:35:08 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0,
> localhost): java.io.IOException: java.lang.RuntimeException: Unable to find
> proto buffer class
> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
> at
> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
> at
> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
> at
> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
> at
> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
> at
> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
> ... 20 more
> Caused by: java.lang.ClassNotFoundException:
> com.rick.reports.Reports$SensorReports
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:191)
> at
> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
> ... 37 more
>
> 15/02/23 17:35:08 ERROR TaskSetManager: Task 0 in stage 0.0 failed 1
> times; aborting job
> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks
> have all completed, from pool
> 15/02/23 17:35:08 INFO TaskSchedulerImpl: Cancelling stage 0
> 15/02/23 17:35:08 INFO DAGScheduler: Job 0 failed: foreach at
> NewReportProcessor.scala:17, took 0.644071 s
> Exception in thread "main" org.apache.spark.SparkException: Job aborted
> due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent
> failure: Lost task 0.0 in stage 0.0 (TID 0, localhost):
> java.io.IOException: java.lang.RuntimeException: Unable to find proto
> buffer class
> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:988)
> at
> org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
> at
> org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
> at
> org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
> at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.RuntimeException: Unable to find proto buffer class
> at
> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:775)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1807)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
> at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
> at
> org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
> at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
> ... 20 more
> Caused by: java.lang.ClassNotFoundException:
> com.rick.reports.Reports$SensorReports
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:191)
> at
> com.google.protobuf.GeneratedMessageLite$SerializedForm.readResolve(GeneratedMessageLite.java:768)
> ... 37 more
>
> Driver stacktrace:
> at org.apache.spark.scheduler.DAGScheduler.org
> $apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1214)
> at
> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1203)
> at
> org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1202)
> at
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> at
> org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1202)
> at
> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
> at
> org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:696)
> at scala.Option.foreach(Option.scala:236)
> at
> org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:696)
> at
> org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1420)
> at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
> at
> org.apache.spark.scheduler.DAGSchedulerEventProcessActor.aroundReceive(DAGScheduler.scala:1375)
> at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
> at akka.actor.ActorCell.invoke(ActorCell.scala:487)
> at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
> at akka.dispatch.Mailbox.run(Mailbox.scala:220)
> at
> akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
> at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
> at
> scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
> at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
> at
> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
>
> The Proper Report Output:
> ====================
> reports {
> network_report {
> begin_time: 1424380054789676056
> end_time: 1424380054789740740
> source: "<some-IP-address>:80"
> destination: "<some-IP-address>:46792"
> protocol: TCP
> stream_id: 3
> stream_status: 8
> }
> http_report {
> request {
> method: "GET"
> etc...
>
>