【问题标题】:Flink Kryo serializer because Chill serializer couldn't be foundFlink Kryo 序列化器,因为找不到 Chill 序列化器
【发布时间】:2020-06-29 21:52:14
【问题描述】:

有时会引发此错误并关闭任务管理器。我使用了 org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode

WARN  org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer  - Falling back to default Kryo serializer because Chill serializer couldn't be found.
    java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.getKryoInstance(KryoSerializer.java:436)
        at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.checkKryoInitialized(KryoSerializer.java:454)
        at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.deserialize(KryoSerializer.java:337)
        at org.apache.flink.api.common.typeutils.CompositeSerializer.deserialize(CompositeSerializer.java:151)
        at org.apache.flink.contrib.streaming.state.ttl.RocksDbTtlCompactFiltersManager$ListElementFilter.nextElementLastAccessTimestamp(RocksDbTtlCompactFiltersManager.java:202)
        at org.apache.flink.contrib.streaming.state.ttl.RocksDbTtlCompactFiltersManager$ListElementFilter.nextUnexpiredOffset(RocksDbTtlCompactFiltersManager.java:189)
    Caused by: java.lang.ClassNotFoundException: scala/Function0
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at com.twitter.chill.KryoBase.$anonfun$functions$1(KryoBase.scala:41)
        at com.twitter.chill.KryoBase.$anonfun$functions$1$adapted(KryoBase.scala:41)
        at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
        at scala.collection.immutable.Range.foreach(Range.scala:155)
        at scala.collection.TraversableLike.map(TraversableLike.scala:233)
        at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
        at scala.collection.AbstractTraversable.map(Traversable.scala:104)
        at com.twitter.chill.KryoBase.<init>(KryoBase.scala:41)
        at org.apache.flink.runtime.types.EmptyFlinkScalaKryoInstantiator.newKryo(FlinkScalaKryoInstantiator.scala:45)
        at org.apache.flink.runtime.types.FlinkScalaKryoInstantiator.newKryo(FlinkScalaKryoInstantiator.scala:82)
        ... 10 more
    Exception in thread "Thread-9" java.lang.IllegalArgumentException: classLoader cannot be null.
        at com.esotericsoftware.kryo.Kryo.setClassLoader(Kryo.java:975)
        at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.checkKryoInitialized(KryoSerializer.java:477)
        at org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.deserialize(KryoSerializer.java:337)
        at org.apache.flink.api.common.typeutils.CompositeSerializer.deserialize(CompositeSerializer.java:151)
        at org.apache.flink.contrib.streaming.state.ttl.RocksDbTtlCompactFiltersManager$ListElementFilter.nextElementLastAccessTimestamp(RocksDbTtlCompactFiltersManager.java:202)
        at org.apache.flink.contrib.streaming.state.ttl.RocksDbTtlCompactFiltersManager$ListElementFilter.nextUnexpiredOffset(RocksDbTtlCompactFiltersManager.java:189)

【问题讨论】:

  • 你能分享一个重现问题的小例子吗?
  • 不,我不能。但我向我显示这条消息“INFO org.apache.flink.api.java.typeutils.TypeExtractor - 类 org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode 不能用作一个 POJO 类型,因为并非所有字段都是有效的 POJO 字段,并且必须作为 GenericType 处理。请阅读 Flink 文档“数据类型和序列化”以了解对性能的影响的详细信息。”。可以关联这条消息吗?
  • 我用jackson作为输入输出类型
  • ClassNotFoundException: scala/Function0 通常在您尝试使用另一个 scala 环境在一个 scala 版本中启动已编译的 scala 代码时出现。例如 2.11 和 2.12

标签: java scala apache-flink jackson-databind


【解决方案1】:

这可能是issue 在本机压缩线程的上下文中没有用户类加载器。

作为一种解决方法,我建议使用具有简单元素的列表状态,该类型在序列化时具有固定的字节长度。那将是原始类型和 POJO,如果可能的话,可能会实现自定义的固定长度序列化器。那么 Kryo 序列化器就不必在 TTL 清理中调用,并且需要用户类加载器。

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多