Spark:数据帧序列化

问题描述 投票:4回答:1

我有2个关于Spark序列化的问题,我只能通过谷歌搜索找不到答案。

  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)
scala apache-spark serialization spark-dataframe kryo
1个回答
4
投票

这是否意味着Kryo从未被用在第一位?

这意味着它。 Spark SQL(Dataset)使用它自己的柱状存储来进行缓存。没有使用Java或Kryo序列化,因此spark.serializer根本没有影响。

© www.soinside.com 2019 - 2024. All rights reserved.