操作系统:Windows 10
jdk版本:1.8.0_181
scala版本:2.11.8
zookeeper版本:hbase自带zookeeper
hadoop版本:2.7.5
spark版本:2.3.0
hbase版本:1.4.0
出现问题:
使用pycharm下编写的通过Pyspark将rdd数据写入hbase产生了空指针的问题。最奇怪的是,这个环境读取Hbase的数据完全没问题,但是写入就会产生空指针。
解决办法:
我使用的Hbase1.4.0、spark版本是2.3.0。读取Hbase的数据需要将hbase的依赖包导入到spark中(使用Pyspark读取hbase不会的可以参考我的上一篇文章)考虑可能是Hbase版本升级后依赖包内存在接口修改,导致无法使用。
解决方式将Hbase降级使用1.1.2低版本并且把所有hbase开头的依赖包hbase-*.jar全部导入到spark目录下的jars目录里,另外还需要下载一个spark-examples_2.11-1.6.0-typesafe-001.jar。
由于apache这类项目更新快,jar版本控制严格,不像使用scala可以通过maven进行版本控制,python的话就会很费劲,事了很多次最后使用低版本的依赖包就可以解决写入空指针的问题。
在这附一个官方测试用例的地址,大家可以跑跑看:
hbase_outputformat.py