本文将介绍
1、spark如何利用saveAsHadoopDataset和saveAsNewAPIHadoopDataset将RDD写入hbase
2、spark从hbase中读取数据并转化为RDD
操作方式为在eclipse本地运行spark连接到远程的hbase。
java版本:1.7.0
scala版本:2.10.4
zookeeper版本:3.4.5(禁用了hbase自带zookeeper,选择自己部署的)
hadoop版本:2.4.1
spark版本:1.6.1
hbase版本:1.2.3
集群:centos6.5_x64
将RDD写入hbase
注意点:
依赖:
将lib目录下的hadoop开头jar包、hbase开头jar包添加至classpath
此外还有lib目录下的:zookeeper-3.4.6.jar、metrics-core-2.2.0.jar(缺少会提示hbase RpcRetryingCaller: Call exception不断尝试重连hbase,不报错)、htrace-core-3.1.0-incubating.jar、guava-12.0.1.jar
$SPARK_HOME/lib目录下的 spark-assembly-1.6.1-hadoop2.4.0.jar
不同的package中可能会有相同名称的类,不要导错
连接集群:
spark应用需要连接到zookeeper集群,然后借助zookeeper访问hbase。一般可以通过两种方式连接到zookeeper:
第一种是将hbase-site.xml文件加入classpath
第二种是在HBaseConfiguration实例中设置
如果不设置,默认连接的是localhost:2181会报错:connection refused
本文使用的是第二种方式。
hbase创建表:
虽然可以在spark应用中创建hbase表,但是不建议这样做,最好在hbase shell中创建表,spark写或读数据
使用saveAsHadoopDataset写入数据
package com.test
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.Put
import org.apache.hadoop.hbase.io.I