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

时间:2014-08-12 19:06:29

标签: hbase apache-spark

此链接讨论了通过Java API写入HBase的一种很好的方式。

Writing to HBase via Spark: Task not serializable

如何从HBase读取数据。

比如说,我有一个属性名称 - >给我开始和停止行的文件(每行提供一个单独的开始和停止行,可以在不同的服务器之间划分) 其他属性告诉我服务器名称和表名称。 可以请任何给我提供样品,如何做,我试过,但我继续得到不可序列化的错误。

(这是我试过的,Spark serialization error

任何帮助都将深受赞赏。

1 个答案:

答案 0 :(得分:1)

首先 - 你没有给出任何细节。没有人可以帮助确定这种方式没有序列化。

默认情况下,您在Spark中执行的函数使用或引用的任何对象都必须为Serializable。您可以通过这种方式设计对象,也可以不引用它们。当内部类发挥作用时,引用内容会变得复杂,而Function通常是内部类。

但是,为什么你的某些东西不是Serializable,这总是一个直截了当的原因。我建议尽量避免非static内部类。检查您是否毫无意义地持有对Function中对象的引用。将它们转换为不保存这些引用,不需要它们,或者仅使用Serializable值的一部分。接下来,您可能必须标记某些对象Serializable,如果它们不是,并且让默认序列化管理序列化是有意义的。我不同意@transient是一个解决办法;它只是让一些字段根本不被发送,这在某些情况下是合适的。当您发现远程计算机上的值已“消失”(未序列化)时,可能会导致令人惊讶的NullPointerException