Scala spark kryoserializer缓冲区溢出:未设置conf

Scala spark kryoserializer缓冲区溢出:未设置conf,scala,apache-spark,Scala,Apache Spark,我面临着与我在其他几个问题中发现的相同的一般问题,但所有问题中建议的解决方案对我都不起作用。另外,这是一个不同的问题,我甚至看不到kryo值后,我设置它从火花壳 设置属性: conf.set(“spark.kryoserializer.buffer.max”,“2048”) res1:org.apache.spark.SparkConf=org.apache.spark。SparkConf@463c5d0f 尝试查看已设置的值: spark.sqlContext.getAllConfs.get(

我面临着与我在其他几个问题中发现的相同的一般问题,但所有问题中建议的解决方案对我都不起作用。另外,这是一个不同的问题,我甚至看不到kryo值后,我设置它从火花壳

设置属性:

conf.set(“spark.kryoserializer.buffer.max”,“2048”)
res1:org.apache.spark.SparkConf=org.apache.spark。SparkConf@463c5d0f

尝试查看已设置的值:
spark.sqlContext.getAllConfs.get(“spark.kryoserializer.buffer.max”)
res2:Option[String]=None

不知道为什么我看不到刚才设置的值

此外,如果我执行getAll属性列表,我会得到以下结果:
spark.sqlContext.getAllConfs

scala.collection.immutable.Map[String,String]=Map(spark.port.maxRetries->20,spark.serializer->org.apache.spark.serializer.KryoSerializer,spark.sql.warehouse.dir->/user/hive/warehouse,spark.warn.jars->local:/opt/cloudera/parcels/SPARK2.2.0.cloudera1-1.cdh5.12.0.0.p0.142354/lib/SPARK2/jars/*,…

有人能告诉我这里有什么问题吗?不确定我是否在设置属性时做错了什么


Spark版本:
2.2.0

似乎2048是不允许的。通过Spark外壳获得以下错误:

$ bin/spark-shell --conf spark.kryoserializer.buffer.max=2048
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/04/03 19:33:03 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/04/03 19:33:03 ERROR SparkContext: Error initializing SparkContext.
java.lang.IllegalArgumentException: spark.kryoserializer.buffer.max must be less than 2048 mb, got: + 2048 mb.
    at org.apache.spark.serializer.KryoSerializer.<init>(KryoSerializer.scala:68)
从spark配置

spark.kryoserializer.buffer.max
Kryo的最大允许尺寸 序列化缓冲区,在MiB中,除非另有规定。这必须是 大于您尝试序列化的任何对象,并且必须小于 2048m。如果出现“超出缓冲区限制”异常,则增加该值 在克鲁约里面


是的,我后来意识到了。但即使我试图将它设置为2047年。它根本没有显示任何内容。奇怪的是,当您检索它时,您会得到属性的值。我一点也没有得到。奇怪的是,我在2.1.2和2.3.0(我已经安装了这些)上进行了测试,并且它可以工作。想知道
conf.
您得到了什么(正如你在Q中提到的),你可以在哪里设置它。你可以试试
sc.getConf.set
scala> sc.getConf.set("spark.kryoserializer.buffer.max","1024")
res3: org.apache.spark.SparkConf = org.apache.spark.SparkConf@7d8d671b
scala> spark.sqlContext.getConf("spark.kryoserializer.buffer.max")
res5: String = 1024