Java 向Hbase表插入数据报错(org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apa)

来源:互联网 发布:网络端口号 编辑:程序博客网 时间:2024/05/21 00:45

在用JAVA代码向Hbase表插入数据的时候,跳出org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apache.hadoop.hbase.client.HTable错误,刚接触大数据开发,当然得记录一下.

从上面可以看出HTablePool 转化为HTable类型了出错.查看getTable()方法.

原来,getTable返回的类型是HTableInterface类型,知道原因就好办了.


原代码:

public static void insertData1(String tableName) {    System.out.println("start insert data ......");    HTablePool pool = new HTablePool(configuration, 1000);    HTable table = (HTable) pool.getTable(tableName);    Put put = new Put("112233bbbcccc".getBytes());// 一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值    put.add("column1".getBytes(), null, "aaa".getBytes());// 本行数据的第一列    put.add("column2".getBytes(), null, "bbb".getBytes());// 本行数据的第三列    put.add("column3".getBytes(), null, "ccc".getBytes());// 本行数据的第三列    try {        table.put(put);    } catch (IOException e) {        e.printStackTrace();    }    System.out.println("end insert data ......");}


解决方法:

table.put(put); 换成 

pool.getTable(tName).put(put);

修改后的代码:

** * 插入数据 * @param tableName */public static void insertData(String tableName) {    System.out.println("start insert data ......");    HTablePool pool = new HTablePool(configuration, 1000);    Put put = new Put("112233bbbcccc".getBytes());// 一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值    put.add("column1".getBytes(), null, "aaa".getBytes());// 本行数据的第一列    put.add("column2".getBytes(), null, "bbb".getBytes());// 本行数据的第三列    put.add("column3".getBytes(), null, "ccc".getBytes());// 本行数据的第三列    try {        //如今应用的api版本中pool.getTable返回的类型是HTableInterface ,无法强转为HTable        pool.getTable(tableName).put(put);    }catch (Exception e){    }    System.out.println("end insert data ......");}





阅读全文
0 0