• HBase1.0.0 实现数据增删查


    HBase1.0.0 即Hadoop 2.6 采用maven 的方式实现HBase数据简单操作

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.HColumnDescriptor;
    import org.apache.hadoop.hbase.HTableDescriptor;
    import org.apache.hadoop.hbase.MasterNotRunningException;
    import org.apache.hadoop.hbase.TableName;
    import org.apache.hadoop.hbase.ZooKeeperConnectionException;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    import org.apache.hadoop.hbase.client.HBaseAdmin;
    import org.apache.hadoop.hbase.client.HConnection;
    import org.apache.hadoop.hbase.client.HTableInterface;
    import org.apache.hadoop.hbase.client.HTablePool;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.client.Table;
    import org.apache.hadoop.hbase.util.Bytes;
    
    /**
     * @author 作者 E-mail:
     * @version 创建时间:2015年12月28日 下午11:31:31 类说明
     */
    public class HBaseUtils {
        /*
         * static { HBaseDaoPool.getInstance(); }
         */
    
        private static Configuration conf;
        private static HBaseAdmin admin;
       private static HTable hTable = null;
    static { conf = new Configuration(); String filePath = "hbase-site.xml"; Path path = new Path(filePath); conf.addResource(path); conf = HBaseConfiguration.create(conf); } /** * 创建表并判断表是否存在,如果存在则退出 * @param name * @param cf * @throws Exception */ @SuppressWarnings("deprecation") public static void create_table(String name, String cf) throws Exception { admin = new HBaseAdmin(conf); // 先检查表是否存在 if (admin.tableExists(name)) { System.out.println("table is exit" + name); System.exit(0); } HTableDescriptor tableDesc = new HTableDescriptor(name); HColumnDescriptor hd = new HColumnDescriptor(cf); /* hd.setMaxVersions(version); */ tableDesc.addFamily(hd); admin.createTable(tableDesc); admin.close(); } /** * 获得HBase里面所有Table * @return * @throws Exception * @throws ZooKeeperConnectionException * @throws MasterNotRunningException */ @SuppressWarnings({ "unused", "deprecation" }) private static List<String> getAllTable() throws MasterNotRunningException, ZooKeeperConnectionException, Exception { List<String> table = null; admin = new HBaseAdmin(conf); try { HTableDescriptor[] listTables = admin.listTables(); if (listTables.length > 0) { table = new ArrayList<String>(); for (HTableDescriptor tableDes : listTables) { table.add(tableDes.getNameAsString()); System.out.println("table list:" + tableDes.getNameAsString()); } } } catch (Exception e) { e.printStackTrace(); } return table; } /** * 添加一条记录 * @param tableName * @param rowKey * @param cloumnFianly * @param column * @param values * @return */ @SuppressWarnings({ "unused", "deprecation", "resource" }) private static boolean addOneRows(String tableName, String rowKey, String cloumnFianly, String column, byte[] values) { HTablePool hTablePool = new HTablePool(conf, 1000); HTableInterface table = hTablePool.getTable(tableName); Put put = new Put(rowKey.getBytes()); put.add(cloumnFianly.getBytes(), column.getBytes(), values); try { table.put(put); System.out.println("add success:" + rowKey + "....end"); return true; } catch (IOException e) { e.printStackTrace(); System.out.println("add false :" + rowKey + " error ...end"); return false; } } /** * 根据表名插入一条数据,rowkey 做了简单处理,前面加了7位随机数 * @param hConnection * @param tableName */ @SuppressWarnings("deprecation") public static void insertData(String tableName) { try { TableName table = TableName.valueOf(tableName); System.out.println(table + "table"); Connection connection = ConnectionFactory.createConnection(conf); Table tb1 = connection.getTable(table); Random random = new Random(); int sum = random.nextInt(9999999); String.format("%07d", sum); String rowKkey = String.format("%07d", sum); Put put = new Put(Bytes.toBytes(rowKkey)); put.add(Bytes.toBytes("cf1"), Bytes.toBytes("address"), Bytes.toBytes("zz")); tb1.put(put); tb1.close(); System.out.println("insert end...."); } catch (IOException e) { e.printStackTrace(); } }
     /**
         * 根据rowKey 获得一条记录
         * @param tableName
         * @param rowKey
         */
        public void getOneRowsByKey(String tableName, String rowKey){
          try {
            hTable = new HTable(conf, tableName);
            Get get = new Get(Bytes.toBytes(rowKey));
            Result result = hTable.get( get );
            KeyValue[] rows = result.raw();
            for (int i = 0; i < rows.length; i++){
                String rowname = new String(rows[i].getQualifier());
                String rowValue = new String(rows[i].getValue());
                System.out.println("rowname:" + rowname + "--value--" +rowValue);
                
            }
        }
        catch ( IOException e ) {
          
            e.printStackTrace();
        }
        }
    
    
    
    public static void main(String[] args) throws Exception {
    
            // addOneRows("test", "row7", "cf", "g", "value7".getBytes());
            // String table = "ps";
            String table = "a1";
            String cf = "cf";
            // create_table(table, cf);
            // getAllTable();
            insertData(table);
            System.out.println("success");
        }
    }

    maven 配置:

        <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>2.6.0</version>
            </dependency>
            
            <!-- hbase -->
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-client</artifactId>
                <version>1.0.0</version>
            </dependency>
            
                <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-server</artifactId>
                <version>1.0.0</version>
            </dependency>
    hbase-site.xml 配置
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--Autogenerated by Cloudera Manager-->
    <configuration>
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://HMaster/hbase</value>
      </property>
      <property>
        <name>hbase.client.write.buffer</name>
        <value>2097152</value>
      </property>
      <property>
        <name>hbase.client.pause</name>
        <value>100</value>
      </property>
      <property>
        <name>hbase.client.retries.number</name>
        <value>35</value>
      </property>
      <property>
        <name>hbase.client.scanner.caching</name>
        <value>100</value>
      </property>
      <property>
        <name>hbase.client.keyvalue.maxsize</name>
        <value>10485760</value>
      </property>
      <property>
        <name>hbase.regionserver.thrift.http</name>
        <value>false</value>
      </property>
      <property>
        <name>hbase.thrift.support.proxyuser</name>
        <value>false</value>
      </property>
      <property>
        <name>hbase.rpc.timeout</name>
        <value>60000</value>
      </property>
      <property>
        <name>hbase.snapshot.enabled</name>
        <value>true</value>
      </property>
      <property>
        <name>hbase.snapshot.master.timeoutMillis</name>
        <value>60000</value>
      </property>
      <property>
        <name>hbase.snapshot.region.timeout</name>
        <value>60000</value>
      </property>
      <property>
        <name>hbase.snapshot.master.timeout.millis</name>
        <value>60000</value>
      </property>
      <property>
        <name>hbase.security.authentication</name>
        <value>simple</value>
      </property>
      <property>
        <name>zookeeper.session.timeout</name>
        <value>60000</value>
      </property>
      <property>
        <name>zookeeper.znode.parent</name>
        <value>/hbase</value>
      </property>
      <property>
        <name>zookeeper.znode.rootserver</name>
        <value>root-region-server</value>
      </property>
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node5,node2,node3,node4,node1</value>
      </property>
      <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
      </property>
    </configuration>
  • 相关阅读:
    程序员为什么难管理?
    Python多继承
    如何从程序员走向管理层?
    为什么Python能超越JAVA,有什么优势?
    HTTP协议简介与在python中的使用详解
    人力资源管理书籍推荐,这本书HR必看
    把市面上的书翻了个遍,找到这五本经典营销管理书籍推荐给大家
    服务器部署之 cap deploy:setup
    【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
    【转】C/C++字节对齐算法
  • 原文地址:https://www.cnblogs.com/zhanggl/p/5091757.html
Copyright © 2020-2023  润新知