需求:在hbase上已经有数据了,我们需要将数据放到hive中进行分析处理
1、启动环境
a.启动hadoop集群
sbin/start-all.sh
b.启动zookeeper集群
zkServer.sh start
c.启动hbase
cd hbase
bin/start-hbase.sh
./hbase shell
list -- 查看表
d.启动hive
cd /opt/hive/bin
./hive
2、新建hbase表 classes:
create 'classes','user'
加入数据:
put 'classes','001','user:name','jack'
put 'classes','001','user:age','20'
put 'classes','002','user:name','liza'
put 'classes','001','user:age','18'
3、创建hive 外部表
create external table classes(id int,name string,age int)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,user:name,user:age")
tblproperties("hbase.table.name"="classes");
这里会报错:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hbase/HBaseConfiguration
原因是调遣hbase包错误,配置文件不能加载(hive加载不到hbase包)
解决办法:将hbase目录下jar包拷贝到hadoop/lib下
export HBASE_HOME=/opt/hbase
export HIVE_HOME=/opt/hive
ln -s $HBASE_HOME/lib/hbase-server-1.2.6.jar $HIVE_HOME/lib/hbase-server-1.2.6.jar
ln -s $HBASE_HOME/lib/hbase-client-1.2.6.jar $HIVE_HOME/lib/hbase-client-1.2.6.jar
ln -s $HBASE_HOME/lib/hbase-protocol-1.2.6.jar $HIVE_HOME/lib/hbase-protocol-1.2.6.jar
ln -s $HBASE_HOME/lib/hbase-it-1.2.6.jar $HIVE_HOME/lib/hbase-it-1.2.6.jar
ln -s $HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar $HIVE_HOME/lib/htrace-core-3.1.0-incubating.jar
ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-1.2.6.jar $HIVE_HOME/lib/hbase-hadoop2-compat-1.2.6.jar
ln -s $HBASE_HOME/lib/hbase-hadoop-compat-1.2.6.jar $HIVE_HOME/lib/hbase-hadoop-compat-1.2.6.jar
ln -s $HBASE_HOME/lib/hbase-common-1.2.6.jar $HIVE_HOME/lib/hbase-common-1.2.6.jar
再次执行创建hive 外部表
set hive.cli.print.header=true; 显示抬头
再添加数据到hbase:
put 'classes','002','user:age','15'
hive查询数据: