Spark: Dataframe Serialization



我有2个有关Spark Serialization的问题

  1. 如何打印出当前使用的序列化器的名称;我想知道Spark.Serializer是Java还是Kryo。
  2. 我具有以下代码,该代码应该使用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完全没有影响。

相关内容

  • 没有找到相关文章

最新更新