Spark-HBASE错误java.lang.IllegalStateException:未读取的块数据

Sau*_*wal 5 hbase apache-spark apache-spark-sql

我正在尝试使用jersey Rest-API通过java-Spark程序从HBASE表中获取记录,然后出现以下错误,但是当我通过spark-Jar访问HBase表时,代码正在执行且没有错误。

我有2个用于Hbase的工作程序节点和2个用于spark的工作程序节点,它们由同一主服务器维护。

WARN TaskSetManager:在阶段0.0(TID 1,172.31.16.140)中丢失了任务1.0:java.lang.IllegalStateException:java.io.ObjectInputStream上java.io.ObjectInputStream $ BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2421)处的未读取块数据.readObject0(ObjectInputStream.java:1382)at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream。 org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala)上java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)上的java:io.ObjectInputStream.java:1350) :69),网址为org.apache.spark.serializer.JavaSerializerInstance。在org.apache.spark.executor.Executor $ TaskRunner.run(Executor.scala:194)处在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)处进行反序列化(JavaSerializer.scala:95) .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)在java.lang.Thread.run(Thread.java:745)

Qin*_*ang 6

好的,我可能知道你的问题,因为我刚刚经历过。

原因很可能是漏掉了一些hbase jar,因为spark运行时,sp​​ark需要通过hbase jar读取数据,如果不存在,就会抛出一些异常,怎么办?这很容易

在提交作业之前,您需要添加 params --jars 并加入一些 jar 如下:

--jars /ROOT/server/hive/lib/hive-hbase-handler-1.2.1.jar,
/ROOT/server/hbase/lib/hbase-client-0.98.12-hadoop2.jar,
/ROOT/server/ hbase/lib/hbase-common-0.98.12-hadoop2.jar

/ROOT/server/hbase/lib/hbase-server -0.98.12-hadoop2.jar 、/ROOT/server/hbase/lib/hbase-hadoop2- COMPAT-0.98.12-hadoop2.jar,
/ROOT/server/hbase/lib/guava-12.0.1.jar,
/ROOT/server/hbase/lib/hbase-protocol-0.98.12-hadoop2.jar,
/ ROOT /server/hbase/lib/htrace-core-2.04.jar

如果可以,享受它!