java hbase 依赖_HBase的JavaAPI

本文介绍了如何使用Java API与HBase集成,包括Maven依赖、创建与管理表、插入数据以及连接配置。同时,文章还展示了HBase与Hive的集成,提供了创建外部表和内部表的Hive建表语句,强调了数据实时同步的注意事项。
摘要由CSDN通过智能技术生成

HBase通过JavaAPI和HIVE集成

1、Maven导入依赖包: hbase-clinet 版本与server上的hbase相同

org.apache.hbase

hbase-client

1.3.5

org.apache.hive

hive-hbase-handler

1.0.0

mysql

mysql-connector-java

5.1.38

2、编写demo

//Configuration同Hadoop

//Connection打开hbase链接

//Admin类管理命名空间和表等元数据

//connection管理数据

//H【Table】|【Column】Descriptor table描述类/列族描述类/列描述类/

public class HbaseJavaApi {

static Connection connect;

public static void main(String args[]) {

try {

createTable();

} catch (IOException e) {

e.printStackTrace();

}

try {

listTable();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void createTable() throws IOException {

//账户类

Admin admin=getAdmin();

//表描述类

HTableDescriptor tableDescriptor=new HTableDescriptor(TableName.valueOf("demo6"));

//列描述类

HColumnDescriptor columnDescriptor=new HColumnDescriptor("info1");

//挂载列到表上

tableDescriptor.addFamily(columnDescriptor);

//客户端执行添加表

admin.createTable(tableDescriptor);

}

public static void listTable() throws IOException {

Admin admin=getAdmin();

//客户端执行list,获取表名数组

TableName[] tableNames = admin.listTableNames();

for (TableName name : tableNames) {

System.out.println(name);

}

connect.close();

}

public static void insertColumn() throws IOException {

//获取表

Table table = connect.getTable(TableName.valueOf("zookeeper"));

//构建PUT,属性为行键

Put put=new Put("xixi".getBytes());

//添加列值信息,列族,列键,cell值

put.addColumn("cf01".getBytes(),"name".getBytes(),"jason".getBytes());

//客户端执行put

table.put(put);

//构建get,属性为行键

Get get=new Get("rk01".getBytes());

//添加要查询的,列族,列键

get.addColumn("cf01".getBytes(),"name".getBytes());

//获取get结果

Result result = table.get(get);

//从结果中取得特定信息,指定列族列键的cell

result.getValue("cf01".getBytes(),"name".getBytes());

//构建scan

Scan scan=new Scan();

ResultScanner resultScanner = table.getScanner(scan);

for (Result result1 : resultScanner) {

//从结果中取得特定信息,指定列族列键的cell

result1.getValue("cf01".getBytes(),"name".getBytes());

}

}

public static Admin getAdmin() throws IOException {

if (connect==null) {

//开启链接,指定zookeeper链接信息

Configuration conf = HBaseConfiguration.create();

conf.set("hbase.zookeeper.quorum.", "localhost");

conf.set("hbase.zookeeper.property.clientPort", "2181");

connect = ConnectionFactory.createConnection(conf);

}

//打开客户端

Admin admin=connect.getAdmin();

return admin;

}

}

3、发布工程,包括依赖包

11424471.html

11424471.html

11424471.html

11424471.html

4、shell 运行jar

上传jar包到服务器,命令执行

java -cp HBase-JAVAAPI.jar com.kgc.study.HBaseJavaApi

HBase by Phoenix

安装phoenix

11424471.html

11424471.html

每个regionserver上都安装上phoenix

双引号大小写,单引号

HBase by Hive

建表语句

CREATE external TABLE tbl_name_hive_new(

rowkey string,

val_cf1_col1 string,

val_cf1_col2 string,

val_cf2_col1 string,

val_cf2_col2 string

)

stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

with serderproperties("hbase.columns.mappring"=":key,cf1:col1,cf1:col2,cf2:col1,cf2:col2")

tblproperties("hbase.table.name"="tbl_name_hbase_exists");

--hbase.columns.mapping列键的顺序与表中字段顺序一致

--无论外部内部表,数据都存在hbase维护的库中

--外部表建表要求hbase表已存在

--内部表建表要求hbase表不存在(此时内部表也是误删安全的)

--数据会在双方实时映射(因为操作的都是hbase上的同一个文件)

注:hbase插入的数据会先在内存缓冲区,因此可能会出现hbase更新数据后未实时更新到hive。如果发生,在hbase端使用compact tbl_name命令

hive读取的是hbase文件

hive导入已有的hbase可选用外部表,也可选用内部表

hive创建新的hbase表用内部表

hive写入可以实时映射到hbase

hbase可以写入实时映射到hive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值