问题标签 [kryo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 带有自定义类的嵌套 HashMap 的 Kryo 序列化
我正在尝试使用 kryo 序列化一个自定义类,该类本身包含一些自定义对象,更具体地说是自定义对象的 HashMap。我想知道处理这样的事情的正确方法。下面是我要序列化的类(数据)、嵌套的类以及我当前的 kryo 实现。这是正确的做法吗?
serialization - 如何让 Spark 使用 Kryo 序列化对象?
我想将一个对象从驱动程序节点传递到 RDD 所在的其他节点,以便 RDD 的每个分区都可以访问该对象,如下面的代码片段所示。
在上面的代码片段中,我尝试在 Spark 中由 Kryo序列化ImmutableBytesWritable ,所以我做了以下操作:
- 配置传递给spark上下文的SparkConf实例,即将“ spark.serializer ”设置为“ org.apache.spark.serializer.KryoSerializer ”,将“ spark.kryo.registrator ”设置为“ xt.HelloKryoRegistrator ”;
- 编写一个自定义 Kryo 注册器类,我在其中注册类ImmutableBytesWritable;
- 为ImmutableBytesWritable编写序列化程序
但是,当我在 yarn-client 模式下提交我的 Spark 应用程序时,抛出了以下异常:
线程“主”org.apache.spark.SparkException 中的异常:在 org.apache.spark.util.ClosureCleaner$.clean 的 org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:166) 中的任务不可序列化(ClosureCleaner.scala:158) 在 org.apache.spark.SparkContext.clean(SparkContext.scala:1242) 在 org.apache.spark.rdd.RDD.map(RDD.scala:270) 在 xt.HelloSpark$.main (HelloSpark.scala:23) 在 xt.HelloSpark.main(HelloSpark.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect。 DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:325) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 原因:java.io.NotSerializableException: org.apache.hadoop.hbase.io.ImmutableBytesWritable at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) at java.io.ObjectOutputStream.writeSerialData( ObjectOutputStream.java:1508) 在 java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 在 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) ) 在 org.apache 的 org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:42)。spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:73) at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:164) ... 还有 12 个
似乎ImmutableBytesWritable不能被 Kryo 序列化。那么让 Spark 使用 Kryo 序列化对象的正确方法是什么?Kryo 可以序列化任何类型吗?
class - Apache-Spark 中的 Kryo 类错误
我有一些 Spark 代码,我使用 Kryo 序列化。当没有服务器发生故障时,一切都运行良好,但是当服务器发生故障时,我会遇到一些大问题,因为它试图自行恢复。基本上,错误消息表明我的Article
课程对服务器来说是未知的。
我真的很难理解我做错了什么......
我在我的地图之外声明这些类
似乎有些执行者不再知道 anArticle
是什么......我该如何解决这个问题?
谢谢,斯蒂芬
apache-kafka - 通过 Kafka 发送带有字节 [] 的 Kryo 自定义序列化类
我正在尝试用 Kryo 序列化一个类并通过 Apache Kafka 发送它。我正在序列化的对象有一个 byte[] 作为类中的一个字段。序列化对象工作正常,但是当我尝试使用 read 方法对其进行反序列化时遇到了麻烦。我总是得到一个数组越界异常:-2。
下面是我的数据对象类 pojo 和我的自定义序列化程序
}
关于 readBytes() 和 writeBytes() 用法的文档很少。我这样做正确吗?
java - java.lang.StackOverflowError 使用 Kryo 序列化具有相互引用的对象时
我有一个类似图形的对象,我从服务器发送到客户端,其中nodes
包含adjacencyLists
.
我有类似的东西:
每次我发送包含这些清除的对象时,我都会收到以下错误:
在 Kryonet 中有解决方法吗?谢谢
android - Android 上的 Kryo:找不到类“sun.nio.ch.DirectBuffer”
我在 Android 上使用 Kryonet,启动后,VM 因以下错误而崩溃:找不到类 'sun.nio.ch.DirectBuffer',从方法 com.esotericsoftware.kryo.util.UnsafeUtil.releaseBuffer 引用。
问题是什么?
scala - Apache Spark SQL UDT Kryo 序列化,找不到类
我想为 SchemaRDD 引入自定义类型,我正在关注这个示例
但是我遇到了 Kryo 序列化问题,这里是堆栈跟踪:
其中com.gis.io.GeometryWritable是我为其创建 UDT 的自定义类,它存在于 APP jar 中。我也通过将 spark 默认序列化程序从 kryo 更改为 Java 来尝试在 Google 组中弃用。但这对我没有帮助。有什么建议么 ??如果我错过了什么?以下是我的课程:
这就是我使用它的方式。
已编辑: 实际上我发现如果我只使用一个 RDD(表),自定义 UDT 可以正常工作。当我们加入两个或多个 RDD 时,就会出现问题。据此,当我们使用自定义 ROW 并使用 JOIN 时,这是一个错误。有什么线索吗??
java - Java,Kryo:向持久化为 FieldSerializer 的类添加字段
这是使用 Kryo 序列化库。
我已经将对象序列化到数据库中FieldSerializer
。现在,我想向序列化类添加几个字段,并获得与它们的向后兼容性。
这可能吗?最好的方法是什么?
我尝试将反序列化器切换到TaggedFieldSerializer
,但并不奇怪,这不起作用(Encountered unregistered class ID:
)。
那么有没有办法使用具有附加字段的同一类来反序列化这些对象?
更新 1
如果它不明显,我想避免从数据库中删除所有以前序列化的对象。
serialization - 使用 Kryo 进行 Avro 对象序列化的映射 - Spark
我有一个关于使用 kryo 进行特定 avro 序列化的问题。抱歉,如果这个问题看起来多余,但我没有找到简单的答案。
我已经将 Spark 配置为与 Kryo 一起运行,并且运行良好:Avro 生成的类使用自定义 KryoRegistrator 类进行了很好的序列化。我twitter.chill-avro
也用包。
尽管如此,当我尝试序列化 aMap[String, MyAvroClass]
时,使序列化工作的唯一方法是MyAvroClass
扩展java.io.Serializable
.
有人可以解释一下到底发生了什么,并告诉我如何 Map[..., AvroClass]
用 kryo 注册吗?
谢谢
serialization - 使用 Kryo 和 Spark 序列化 Cassandra 表
我正在尝试使用 Apache Spark 测试 Kryo 序列化,以便测量有无序列化的执行时间,并将 kryo 对象流保存到磁盘以模拟 spark 下的缓存。
我设计的测试是将 Cassandra 表存储在序列化的 CassandraRDD 对象中。
生成 CassandraRDD 的 Scala 代码如下:
这段代码有效,但我怀疑 kvRDD,即 CassandraRDD 对象没有被序列化。
是否有关于什么可以和不能用 Kryo 序列化的规则?我如何用 kryo.register 注册这个类?
如果我尝试使用 kryo.register(ClassOf[CassandraRDD]) 注册,我在尝试执行时会收到以下错误:
请注意,我对 Scala 和 Kryo 非常陌生。
非常感谢你提前