我正在尝试将Spark数据帧转换为Labeled点RDD。我使用以下代码,主要受到here给出的解决方案的启发。我可以遵循代码的逻辑,但不幸的是,Sparks会抛出一个" Task Not Serializable"运行时出错(更具体地说是我将RDD转换为Labeled Point的部分)
val ignored = List("target")
val featInd = df.columns.diff(ignored).map(df.columns.indexOf(_))
// Get index of target
val targetInd = df.columns.indexOf("target")
val labeled = df.rdd.map(r => LabeledPoint(
r.getDouble(targetInd), // Get target value
// Map feature indices to values
Vectors.dense(featInd.map(r.getDouble(_)).toArray)
))
当我尝试搜索此错误时,我意识到这是一个通用错误 - 但我对Spark很新,所以在这种特定情况下我们无法弄清楚导致此错误的原因
非常感谢任何帮助。
编辑: 更新错误消息:
org.apache.spark.SparkException:任务不可序列化 org.apache.spark.util.ClosureCleaner $ .ensureSerializable(ClosureCleaner.scala:304) 在 org.apache.spark.util.ClosureCleaner $ .ORG $阿帕奇$火花$ UTIL $ ClosureCleaner $$干净(ClosureCleaner.scala:294) 在 org.apache.spark.util.ClosureCleaner $清洁机壳(ClosureCleaner.scala:122) 在org.apache.spark.SparkContext.clean(SparkContext.scala:2055)at org.apache.spark.rdd.RDD $$ anonfun $ map $ 1.apply(RDD.scala:324)at at org.apache.spark.rdd.RDD $$ anonfun $ map $ 1.apply(RDD.scala:323)at at org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:150) 在 org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:111) 在org.apache.spark.rdd.RDD.withScope(RDD.scala:316)at org.apache.spark.rdd.RDD.map(RDD.scala:323)at $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC。(77) 在 $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$(86) 在 $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC。(88) 在 $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$(90) at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:92) $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:94)at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:96)at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:98)at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:100)at $ iwC $$ iwC $$ iwC $$ iwC。(:102)at $ iwC $$ iwC $$ iwC。(:104)at $ iwC $$ iwC。(:106)at $ iwC。(:108)at (:110)at。(:114)at 。()at。(:7)at。() at $ print()at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:606)at org.apache.spark.repl.SparkIMain $ ReadEvalPrint.call(SparkIMain.scala:1065) 在 org.apache.spark.repl.SparkIMain $ Request.loadAndRun(SparkIMain.scala:1346) 在 org.apache.spark.repl.SparkIMain.loadAndRunReq $ 1(SparkIMain.scala:840) 在org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871) 在org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819) 在 org.apache.zeppelin.spark.SparkInterpreter.interpretInput(SparkInterpreter.java:810) 在 org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java:753) 在 org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java:746) 在 org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94) 在 org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer $ InterpretJob.jobRun(RemoteInterpreterServer.java:341) 在org.apache.zeppelin.scheduler.Job.run(Job.java:176)at org.apache.zeppelin.scheduler.FIFOScheduler $ 1.run(FIFOScheduler.java:139) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:178) 在 java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)引起: java.io.NotSerializableException:org.apache.spark.sql.Column 序列化堆栈: - 对象不可序列化(类:org.apache.spark.sql.Column,值:cast(unixtimestamp(x31,yyyy-mm-dd)作为时间戳)) - field(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,name:ts,type:class org.apache.spark.sql.Column) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ IWC @ 21819ecc) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ IWC万国表$$ $$ IWC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC @ 55e507d9) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ IWC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC @ 73ab77c5) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC @ 22ef6ab0) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC @ 6b8d0b8f) - 字段(类:$ iwC $$ iwC $$ iwC,名称:$ iw,类型:类$ iwC $$ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC @ 5f2e0893) - field(类:$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC,$ iwC $$ iwC @ 2859e1a9) - field(类:$ iwC,名称:$ iw,类型:class $ iwC $$ iwC) - 对象(类$ iwC,$ iwC @ 2b85a09c) - field(class:line2053277267 $ 28. $ read,name:$ iw,type:class $ iwC) - object(class line2053277267 $ 28. $ read,line2053277267$28.$read@b3097a9) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ VAL254,类型:class line2053277267 $ 28. $ read) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ IWC @ 7fb74a8a) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ IWC万国表$$ $$ IWC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC @ 4c7d3fc3) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ IWC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC @ 59dc3f29) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC $$ iwC @ 589580f9) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC $$ iwC @ 3abf9e37) - 字段(类:$ iwC $$ iwC $$ iwC,名称:$ iw,类型:类$ iwC $$ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC $$ iwC,$ iwC $$ iwC $$ iwC @ 591c2bf7) - field(类:$ iwC $$ iwC,名称:$ iw,类型:class $ iwC $$ iwC $$ iwC) - 对象(类$ iwC $$ iwC,$ iwC $$ iwC @ 27cdfbd6) - field(类:$ iwC,名称:$ iw,类型:class $ iwC $$ iwC) - 对象(类$ iwC,$ iwC @ 53ed5332) - field(class:line2053277267 $ 56. $ read,name:$ iw,type:class $ iwC) - 对象(类line2053277267 $ 56. $ read,line2053277267 $ 56.$read@376cb566) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC,name: $ VAL329,类型:class line2053277267 $ 56. $ read) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC, $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ @ 6f9b0210) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC, name:$ outer,type:class $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC, $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC @ 51f82ae2) - 字段(类:$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ anonfun $ 1, name:$ outer,type:class $ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC万国表$$ $$ IWC) - 对象(类$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ anonfun $ 1, ) 在 org.apache.spark.serializer.SerializationDebugger $ .improveException(SerializationDebugger.scala:40) 在 org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:47) 在 org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:101) 在 org.apache.spark.util.ClosureCleaner $ .ensureSerializable(ClosureCleaner.scala:301) ... 51更多谢谢!