Spark預設採用Java的序列化器,這裡建議採用Kryo序列化提高效能。實測效能最高甚至提高一倍。

Spark之所以不預設使用Kryo序列化,可能的原因是需要對類進行註冊。

Java程式中註冊很簡單:

        SparkConf conf = new SparkConf().setAppName(appName);
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
conf.registerKryoClasses(new Class[]{YOUR_SPARK_CLASS.class});