gpt4 book ai didi

apache-spark - 为什么kryo注册在SparkSession中不起作用?

转载 作者:行者123 更新时间:2023-12-02 22:57:26 30 4
gpt4 key购买 nike

这是我的代码:

public static SparkSession getTestSparkSession(String name) {
SparkConf conf = new SparkConf()
.set("spark.master", "local")
.set("spark.ui.port", "8040")
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.set("spark.kryo.registrator", "com.test.MyKryoRegistrator");
return SparkSession.builder()
.appName(name)
.config(conf)
.getOrCreate();
}

但似乎该寄存器不起作用:
  • 我在注册器中注册的类仍然无法序列化。
  • 即使我设置了错误的注册器类,也没有警告/错误日志。
  • 我将日志级别设置为DEBUG,发现关于kryo的日志只有一行:DEBUG SparkEnv:58 Using serializer: class org.apache.spark.serializer.KryoSerializer

  • 问题:
  • 如何检查注册器是否正常工作?
  • 我正在通过mvn test运行spark session 。是否需要提交操作?
  • 最佳答案

    如果您想验证Spark是否已将您的配置考虑在内,则可以要求Spark为注册人获取conf。

    您只需要从SparkContext获取底层的SparkSession并按如下所示调用getConf函数:

    sparkContext.getConf.get("spark.kryo.registrator") // (this is in scala)

    否则,您始终可以检查 Spark UI

    现在,如果您想强制注册,则需要将 spark.kryo.registrationRequired设置为 true。 (但是,您需要手动处理很多东西)

    该参数的默认大小写设置为false,因此 Kryo将与每个对象一起写入未注册的类名。编写类名称可能会导致很大的性能开销,因此启用此选项可以严格执行以下操作:用户没有从注册中省略类。

    另一方面,如果将其设置为“true”,则如果未注册的类被序列化,则 Kryo将引发异常。

    我建议您阅读有关该主题的其他答案:
  • Save Spark Dataframe into Elasticsearch - Can’t handle type exception
  • Cannot be cast to org.apache.spark.serializer.Serializer

  • 我希望这有帮助 !

    关于apache-spark - 为什么kryo注册在SparkSession中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47747545/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com