Awesome.

Thanks
Best Regards

On Fri, Mar 27, 2015 at 7:26 AM, donhoff_h <165612...@qq.com> wrote:

> Hi, Akhil
>
> Yes, it's the problem lies in. Thanks very much for point out my mistake.
>
> ------------------ Original ------------------
> *From: * "Akhil Das";<ak...@sigmoidanalytics.com>;
> *Send time:* Thursday, Mar 26, 2015 3:23 PM
> *To:* "donhoff_h"<165612...@qq.com>;
> *Cc:* "user"<user@spark.apache.org>;
> *Subject: * Re: Serialization Problem in Spark Program
>
> Try registering your MyObject[] with Kryo.
> On 25 Mar 2015 13:17, "donhoff_h" <165612...@qq.com> wrote:
>
>> Hi, experts
>>
>> I wrote a very simple spark program to test the KryoSerialization
>> function. The codes are as following:
>>
>> object TestKryoSerialization {
>>   def main(args: Array[String]) {
>>     val conf = new SparkConf()
>>     conf.set("spark.serializer",
>> "org.apache.spark.serializer.KryoSerializer")
>>     conf.set("spark.kryo.registrationRequired","true")  //I use this
>> statement to force checking registration.
>>     conf.registerKryoClasses(Array(classOf[MyObject]))
>>
>>     val sc = new SparkContext(conf)
>>     val rdd =
>> sc.textFile("hdfs://dhao.hrb:8020/user/spark/tstfiles/charset/A_utf8.txt")
>>     val objs = rdd.map(new MyObject(_,1)).collect()
>>     for (x <- objs ) {
>>       x.printMyObject
>>     }
>> }
>>
>> The class MyObject is also a very simple Class, which is only used to
>> test the serialization function:
>> class MyObject  {
>>   var myStr : String = ""
>>   var myInt : Int = 0
>>   def this(inStr : String, inInt : Int) {
>>     this()
>>     this.myStr = inStr
>>     this.myInt = inInt
>>   }
>>   def printMyObject {
>>     println("MyString is : "+myStr+"\tMyInt is : "+myInt)
>>   }
>> }
>>
>> But when I ran the application, it reported the following error:
>> java.lang.IllegalArgumentException: Class is not registered:
>> dhao.test.Serialization.MyObject[]
>> Note: To register this class use:
>> kryo.register(dhao.test.Serialization.MyObject[].class);
>>     at com.esotericsoftware.kryo.Kryo.getRegistration(Kryo.java:442)
>>     at
>> com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:79)
>>     at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:472)
>>     at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:565)
>>     at
>> org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:161)
>>     at
>> org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
>>     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)
>>
>> I don't understand what cause this problem. I have used the
>> "conf.registerKryoClasses" to register my class. Could anyone help me ?
>> Thanks
>>
>> By the way, the spark version is 1.3.0.
>>
>>

Reply via email to