我有2个有关Spark Serialization的问题
- 如何打印出当前使用的序列化器的名称;我想知道Spark.Serializer是Java还是Kryo。
-
我具有以下代码,该代码应该使用Kryo序列化;用于数据框的内存大小变为21meg,这是我仅缓存而没有序列化的四分之一。但是,当我删除Kryo配置时,大小保持相同的21meg。这是否意味着首先从未使用过Kryo?可能是因为数据框中的记录只是行,Java和Kryo序列化都相同?
val conf = new SparkConf() conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer") conf.set("spark.kryo.registrationRequired", "false") val spark = SparkSession.builder.master("local[*]").config(conf) .appName("KryoWithRegistrationNOTRequired").getOrCreate val df = spark.read.csv("09-MajesticMillion.csv") df.persist(StorageLevel.MEMORY_ONLY_SER)
这是否意味着首先从未使用过Kryo?
它的意思是它。Spark SQL(Dataset
)使用其自己的柱状存储进行缓存。不使用Java或Kryo序列化,因此spark.serializer
完全没有影响。