Spark 读写 Hbase 响应的官方参考资料较少,最近正好在测试 Hbase,集成 Spark 时了解的下这方面知识,做一个简单总结,当前 Spark On Hbase 的驱动主要有两种实现,官方驱动和 hortonworks 的 shc。
hbase-connectors
纯官方驱动,以前是单独的项目,现在和 Kafka 驱动集成在一起了。优点是使用便捷,直接在 maven 中添加引用。一般情况无使用冲突。
但也有比较明显的缺陷:
- 使用起来较为复杂,需要自己构建 Hbase 数据结构,能找到的示例很少,不过驱动中内含了一些示例,可以很好的帮我们快速跑通,例如,这里,链接失效的话可以自己进入项目找一找 Example 结尾的文件。
- 只能构建一个 JavaHBaseContext,调用其提供的方法,但是只找到了 RDD 的相关方法,所以对 Spark 2.X 常用的 DataFrame 可能不太友好。
hortonworks-spark
hortonworks 贡献的驱动,与官方驱动相比,又加了一些封装,使得使用方面与其他内置驱动(jdbc 等)基本相同,对 DataFrame 的支持较为友好。
但最大的问题是引用问题:
- 官方 jar 包没发布的到 spark-packages.org,参考,要通过 spark packages 的形式使用还需要指定 hortonworks 的 repository,受限于网络环境,不走代理基本是是用不了的。
Note: com.hortonworks:shc-core:1.1.1-2.1-s_2.11 has not been uploaded to spark-packages.org, but will be there soon.
- 如果通过 maven 的方式引用 jar 包,参考,还是需要指定 maven 的 repository 到 hortonworks。
Note: this artifact is located at Hortonworks repository (https://repo.hortonworks.com/content/repositories/releases/)
- 所以只能通过指定 hortonworks 仓库自动下载依赖 jar 包,和自己事先准备 jar 包并在 spark-submit 时添加 --jars 这些 jar 包的的方式来使用 shc,