IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 小白学hadoop日记day15——hbase的java api -> 正文阅读

[大数据]小白学hadoop日记day15——hbase的java api

pom.xml

<dependencies>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>1.3.6</version>
        </dependency>
    </dependencies>

namespace的操作

package com.al.hbase;



import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;

/**
 * hbase 的 namespace操作.
 * 1、ddl操作使用Admin对象
 * 2、dml操作使用Table对象
 *
 * 步骤:
 * 1、获取conf对象并配置zk地址
 * 2、获取admin或者table对象
 * 3、使用admin或者table进行操作 -----核心
 * 4、关闭admin或者table对象
 */
public class Demo01_NameSpace {
    public static void main(String[] args) throws IOException {
        //1、获取conf对象  --> HbaseConfiguration.create()
        Configuration conf = new Configuration();
        //配置zk的地址
        conf.set("hbase.zookeeper.quorum","qianfeng01:2181,qianfeng02:2181,qianfeng03:2181");
        //2、获取admin对象
        HBaseAdmin admin = new HBaseAdmin(conf);
        //3、使用admin进行操作
        NamespaceDescriptor ns2= NamespaceDescriptor.create("ns2").build();

        //提交创建ns
        //admin.createNamespace(ns2);

        //列出ns
        NamespaceDescriptor[] namespaceDescriptors=admin.listNamespaceDescriptors();
        System.out.println("所有的namespaces:");
        for (NamespaceDescriptor ns : namespaceDescriptors) {
            System.out.println(ns.getName());
        //列出命名空间下的表
            HTableDescriptor[] hTableDescriptors=admin.listTableDescriptorsByNamespace("ns1");
            System.out.println("ns1所有的表");
            for (HTableDescriptor hd : hTableDescriptors) {
                System.out.println(hd.getTableName());
            }
            //删除ns
            admin.deleteNamespace("ns2");
            //4、关闭admin对象
            admin.close();
        }
    }
}

HbaseUtil

package com.al.util;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.List;


public class HbaseUtil {
    static Configuration conf = null;
    static {
        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","qianfeng01:2181,qianfeng02:2181,qianfeng03:2181");
    }
    //获取hbase的admin连接
    public static Admin getAdmin(){
        Admin admin=null;
        try {
            Connection conn = ConnectionFactory.createConnection(conf);
            admin = conn.getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return admin;
    }
    public static Table getTable(String tableName){
        //new一个table对象
        HTable hTable=null;
        try {
            hTable = new HTable(conf, Bytes.toBytes(tableName));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return hTable;
    }
    //关闭对象
    public static void close(Admin admin,Table table){
        if (admin != null){
            try {
                admin.close();
            } catch (IOException e) {
                // do nothing
            }
        }
        if (table != null){
            try {
                table.close();
            } catch (IOException e) {
                // do nothing
            }
        }
    }
    /**
     * 迭代数据
     * @param scanner
     * @param rst
     */
    public static void scanData(ResultScanner scanner,Result rst){
        if (scanner != null){
            for (Result result: scanner){
                listCells(result);
            }
        }else if (rst != null){
            listCells(rst);
        }
    }
    //列出cell
    private static void listCells(Result result) {
        List<Cell> cells = result.listCells();
        for (Cell cell : cells){
            System.out.println(Bytes.toString(CellUtil.cloneFamily(cell))+":"
                    + Bytes.toString(CellUtil.cloneQualifier(cell))+"\t"
            +Bytes.toString(CellUtil.cloneValue(cell)));
        }
    }
}

table操作

package com.al.hbase;

import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class Demo02_table {
    public static void main(String[] args) throws IOException {
        //获取admin
        Admin admin= HbaseUtil.getAdmin();
        //操作
        HTableDescriptor tb=  new HTableDescriptor(TableName.valueOf("tb"));
        //列簇
        HColumnDescriptor data=new HColumnDescriptor(Bytes.toBytes("data"));
        HColumnDescriptor info=new HColumnDescriptor(Bytes.toBytes("info"));
        //设置列簇的属性
        data.setBlockCacheEnabled(true);
        data.setBloomFilterType(BloomType.ROW);
        data.setMaxVersions(3);
        //将列簇添加到表上
        tb.addFamily(data);
        tb.addFamily(info);
        //tb的属性设置
        tb.setCompactionEnabled(true);
        tb.setDurability(Durability.SKIP_WAL);
        //跳过wal
        // 提交创建表
        //admin.createTable(tb);
        //提交创建预分区的table
        /*byte [][] splits = {new byte[10],new byte[20],new byte[30]};
        admin.createTableAsync(tb,splits);*/
        //列出表
        /*System.out.println("所有表:");
        TableName[] tableNames = admin.listTableNames();
        for (TableName tbs:tableNames){
            System.out.println(Bytes.toString(tbs.getName()));
        }*/
        //添加列簇
        /*HColumnDescriptor data1 = new HColumnDescriptor(Bytes.toBytes("data1"));
        //设置列簇的属性
        data1.setBlockCacheEnabled(true);
        data1.setBloomFilterType(BloomType.ROW);
        data1.setMaxVersions(3);
        admin.addColumn(TableName.valueOf("tb"),data1);
        //删除列簇 - 1.2.1删除
        admin.removeFamily();
        */
        //删除表
        if (admin.tableExists(TableName.valueOf("tb"))){
            admin.disableTable(TableName.valueOf("tb"));
            admin.disableTable(TableName.valueOf("tb"));
        }
        //关闭
        HbaseUtil.close(admin,null);
    }
}

存储数据

package com.al.hbase;

import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

public class Demo03_DataPut {
    public static void main(String[] args) throws IOException {
    //获取table对象
    Table tb= HbaseUtil.getTable("tb");
    //构建put对象
        /*Put put = new Put(Bytes.toBytes("rk3"));
        //添加列
        put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("name"),Bytes.toBytes("ls"));
        put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("age"),Bytes.toBytes("14"));
        put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("sex"),Bytes.toBytes("2"));
*/
    //构建put对象
    ArrayList<Put> puts = new ArrayList<>();
    for(int i=3;i <200;i++) {
        Put put = new Put(Bytes.toBytes("rk"+i));
        put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("name"),Bytes.toBytes("ls"+i));
        put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("age"),Bytes.toBytes(new Random(100)+""));
        put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("sex"),Bytes.toBytes("2"));
        puts.add(put);
        }
        //提交
        tb.put(puts);
        //关闭table
        HbaseUtil.close(null,tb);
    }
}

数据查询get

package com.al.hbase;

import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class Demo04_DataGet {
    public static void main(String[] args) throws IOException {
        //获取table对象

        Table tb = HbaseUtil.getTable("tb");
        //构建Get对象
        Get get = new Get(Bytes.toBytes("rk1"));
        Result result = tb.get(get);
        //取某个family的数据
        /*NavigableMap<byte[], byte[]> data = result.getFamilyMap(Bytes.toBytes("data"));
        for (NavigableMap.Entry<byte[], byte[]> map : data.entrySet()){
            System.out.println(Bytes.toString(map.getKey())+"\t"+Bytes.toString(map.getValue()));
        }*/
        //获取数据
        HbaseUtil.scanData(null,result);
        //关闭table
        HbaseUtil.close(null,tb);
    }
}

数据查询

package com.al.hbase;

import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class Demo05_DataScan {
    public static void main(String[] args) throws IOException {
        //获取table对象
        Table tb = HbaseUtil.getTable("tb");
        //构建Get对象
        Scan scan = new Scan();
        //指定起始行
        scan.setStartRow(Bytes.toBytes("rk2"));
        //scan.setMaxResultSize(5);  //字节数
        scan.setStopRow(Bytes.toBytes("rk3"));
        ResultScanner scanner=tb.getScanner(scan);
        //resultscanner的数据需要循环出result,然后再循环cell
        HbaseUtil.scanData(scanner,null);
        //关闭table
        HbaseUtil.close(null,tb);
    }
}

数据删除

package com.al.hbase;

import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class Demo06_DeleteScan {
    public static void main(String[] args) throws IOException {
        //获取table对象
        Table tb = HbaseUtil.getTable("tb");
        //delete对象
        Delete delete=new Delete(Bytes.toBytes("rk2"));
        //删除整行
        tb.delete(delete);
        //删除列
        delete.addColumn(Bytes.toBytes("data"),Bytes.toBytes("name"));
        tb.delete(delete);
        //删除整个列簇的数据
        delete.addFamily(Bytes.toBytes("info"));
        tb.delete(delete);
        //清空整张表
        /*Admin admin = HbaseUtil.getAdmin();
        admin.truncateTable(TableName.valueOf("tb"),true);*/
        //关闭table
        HbaseUtil.close(null,tb);
    }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:22:15  更:2021-07-16 11:22:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 0:33:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码