提问者:小点点

使用JavaAPI从HBase读取Apache Spark(任务不可序列化)


这个链接讨论了通过Java API写入HBase的极好方法。

通过Spark写入HBase:任务不可序列化

如何从HBase读取数据。

比方说,我有一个属性名称-

(这是我尝试的,Spark序列化错误)

任何帮助都将不胜感激。


共1个答案

匿名用户

首先,你根本没有给出任何细节。没有人能够帮助确定什么不是以这种方式序列化的。

默认情况下,Spark中执行的函数所使用或引用的任何对象都必须是Serializable。这取决于您是否以这种方式设计对象,或者不引用它们。当内部类起作用时,很难理解引用了什么,而Function通常是内部类。

尽管如此,总有一个简单的原因可以解释为什么你的某些东西不是< code>Serializable。我建议尽量避免非< code >静态内部类。检查您没有在< code >函数中毫无意义地保存对对象的引用。将它们转换为不保存这些引用,不需要它们,或者只使用< code>Serializable值的一部分。接下来,如果有些对象不是可序列化的,并且让默认序列化管理序列化是有意义的,那么您可能必须将它们标记为< code>Serializable。我不同意< code>@transient是一个修复;它只是使一些字段根本不被发送,这仅在某些情况下是合适的。当您发现远程机器上的值已经“消失”(未序列化)时,这可能会导致令人惊讶的< code > NullPointerException 。