Hadoop HIVE JavaAPI
DDL操作
表的增删改查
1、构建连接
2、从连接中取到一个表DDL操作工具admin
3、admin.createTable(表描述对象);
4、admin.disableTable(表名)
5、admin.deleteTable(表名);
6、admin.modifyTable(表名,表描述对象);
package demo;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
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.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.junit.Before;
import org.junit.Test;public class HbaseClientDDL {Connection conn = null;@Beforepublic void getConn() throws Exception{// 构建一个连接对象Configuration conf = HBaseConfiguration.create(); // 会自动加载hbase-site.xmlconf.set("hbase.zookeeper.quorum", "ip1:2181,ip2:2181,ip3:2181"); //设置管理Hbase的zookeeper对象conn = ConnectionFactory.createConnection(conf);}@Testpublic void testCreateTable() throws Exception{//添加表Admin admin = conn.getAdmin();// 构造DDL操作器HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf("table_info"));// 表描述对象HColumnDescriptor hColumnDescriptor_1 = new HColumnDescriptor("column_info");// 列族定义描述对象hColumnDescriptor_1.setMaxVersions(3); // 设置该列族中存储数据的最大版本数,默认是1hTableDescriptor.addFamily(hColumnDescriptor_1);// 将列族定义信息对象放入表定义对象中admin.createTable(hTableDescriptor);// 建表admin.close();conn.close();}@Testpublic void testDropTable() throws Exception{Admin admin = conn.getAdmin();admin.disableTable(TableName.valueOf("user_info"));// 停用表admin.deleteTable(TableName.valueOf("user_info"));// 删除表admin.close();conn.close();}@Testpublic void testAlterTable() throws Exception{//修改表Admin admin = conn.getAdmin();HTableDescriptor tableDescriptor = admin.getTableDescriptor(TableName.valueOf("table_info"));// 取出旧的表定义信息HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("another_info");// 新构造一个列族定义hColumnDescriptor.setBloomFilterType(BloomType.ROWCOL); // 设置该列族的布隆过滤器类型tableDescriptor.addFamily(hColumnDescriptor);// 将列族定义添加到表定义对象admin.modifyTable(TableName.valueOf("table_info"), tableDescriptor);//admin提交admin.close();conn.close();}
}
DML操作
数据的增删改查
package demo;import java.util.ArrayList;
import java.util.Iterator;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
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 org.junit.Before;
import org.junit.Test;public class HbaseClientDML {Connection conn = null;@Beforepublic void getConn() throws Exception{Configuration conf = HBaseConfiguration.create(); // 会自动加载hbase-site.xmlconf.set("hbase.zookeeper.quorum", "ip1:2181,ip2:2181,ip3:2181");conn = ConnectionFactory.createConnection(conf);}@Testpublic void testPut() throws Exception{//插入数据Table table = conn.getTable(TableName.valueOf("table_info"));// 获取表格Put put = new Put(Bytes.toBytes("001"));// put对象既是rowkeyput.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("xiaowang"));Put put2 = new Put(Bytes.toBytes("002"));put2.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("xiaowei"));// 插如数据ArrayList<Put> puts = new ArrayList<>();puts.add(put);puts.add(put2);table.put(puts);table.close();conn.close();}@Testpublic void testDelete() throws Exception{//删除数据Table table = conn.getTable(TableName.valueOf("table_info"));Delete delete1 = new Delete(Bytes.toBytes("001"));// 构造一个对象封装要删除的数据信息Delete delete2 = new Delete(Bytes.toBytes("002"));delete2.addColumn(Bytes.toBytes("table_info"), Bytes.toBytes("username"));ArrayList<Delete> dels = new ArrayList<>();dels.add(delete1);dels.add(delete2);table.delete(dels);table.close();conn.close();}@Testpublic void testGet() throws Exception{Table table = conn.getTable(TableName.valueOf("table_info"));//获得表Get get = new Get("002".getBytes()); //创建列簇对象Result result = table.get(get);//获得列簇对应数据byte[] value = result.getValue("base_info".getBytes(), "age".getBytes());// 从列簇中取用户指定的某个key的valueSystem.out.println(new String(value));System.out.println("-------------------------");// 遍历整行结果中的所有kv单元格CellScanner cellScanner = result.cellScanner();while(cellScanner.advance()){Cell cell = cellScanner.current();byte[] rowArray = cell.getRowArray(); //本kv所属的行键的字节数组byte[] familyArray = cell.getFamilyArray(); //列族名的字节数组byte[] qualifierArray = cell.getQualifierArray(); //列名的字节数据byte[] valueArray = cell.getValueArray(); // value的字节数组System.out.println("行键: "+new String(rowArray,cell.getRowOffset(),cell.getRowLength()));System.out.println("列族名: "+new String(familyArray,cell.getFamilyOffset(),cell.getFamilyLength()));System.out.println("列名: "+new String(qualifierArray,cell.getQualifierOffset(),cell.getQualifierLength()));System.out.println("value: "+new String(valueArray,cell.getValueOffset(),cell.getValueLength()));}table.close();conn.close();}@Testpublic void testScan() throws Exception{Table table = conn.getTable(TableName.valueOf("table_info"));Scan scan = new Scan("10".getBytes(), "10000\001".getBytes());// 包含起始行键,不包含结束行键,但是如果真的想查询出末尾的那个行键,那么,可以在末尾行键上拼接一个不可见的字节(\000)ResultScanner scanner = table.getScanner(scan);Iterator<Result> iterator = scanner.iterator();while(iterator.hasNext()){Result result = iterator.next();CellScanner cellScanner = result.cellScanner();// 遍历整行结果中的所有kv单元格while(cellScanner.advance()){Cell cell = cellScanner.current();byte[] rowArray = cell.getRowArray(); //本kv所属的行键的字节数组byte[] familyArray = cell.getFamilyArray(); //列族名的字节数组byte[] qualifierArray = cell.getQualifierArray(); //列名的字节数据byte[] valueArray = cell.getValueArray(); // value的字节数组System.out.println("行键: "+new String(rowArray,cell.getRowOffset(),cell.getRowLength()));System.out.println("列族名: "+new String(familyArray,cell.getFamilyOffset(),cell.getFamilyLength()));System.out.println("列名: "+new String(qualifierArray,cell.getQualifierOffset(),cell.getQualifierLength()));System.out.println("value: "+new String(valueArray,cell.getValueOffset(),cell.getValueLength()));}System.out.println("----------------------");}}
参考:
布隆过滤器
Hadoop HIVE JavaAPI相关推荐
- Hadoop Hive sql 语法详细解释
Hive 是基于Hadoop 构建的一套数据仓库分析系统.它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,能够将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- Hadoop Hive迁移至MaxCompute
本文向您详细介绍如何将 Hadoop Hive 数据迁移到阿里云MaxCompute大数据计算服务上. 一.环境准备 1.1.Hadoop集群环境 在进行 Hadoop Hive 数据迁移前,您需要保 ...
- hadoop+hive+spark搭建(一)
1.准备三台虚拟机 2.hadoop+hive+spark+java软件包 传送门:Hadoop官网 Hive官网 Spark官网 一.修改主机名,hosts文件 主机名修改 hostnam ...
- #Hive报错 WritableStringObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspect
#Hive报错 FAILED: ClassCastException org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableS ...
- hive遇到FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误...
hive遇到FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误 起因 ...
- 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
报错环境: CDH中集成的hive服务,启动报错,所以初始化一下元数据. 配置文件:/etc/hive/conf hive-site.xml 命令目录:/opt/cloudera/parcels/CD ...
- Hadoop Hive sql语法详解
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- Ubuntu 配置大数据平台hadoop hive数据仓库之完整踩坑
导读:作为大数据界的萌新,这篇文章的写作过程,经历了各种阻挠,也踩了无数坑,俗话说面向CSDN.度娘编程,然后多看官方文档,在遇到各种神奇的坑的时候,搜着搜着就到了国外,刹那间一大堆英文向你飞来,就知 ...
- oracle+olh+hive,hadoop+hive+hbase的简单安装 | YallonKing
hadoop+hive+hbase的简单安装 hadoop.hive.hbase下载地址:http://mirror.bit.edu.cn/apache/ (一)hadoop安装: 解压hadoop- ...
最新文章
- AMD and CMD are dead之js模块化黑魔法
- mysql去除字符串首的非字母_如何从SQLServer中的字符串中删除所有非字母字符?...
- SQLite中使用全文搜索FTS
- vscode 加参数运行_VSCode 调试 Webpack 指南
- 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;
- CV《物体识别与检测3 - 多目标识别的优化技术》
- Centos下安装X Window+GNOME Desktop+FreeNX
- EFCore 迁移
- Socket,CAsyncSocket,CSocket介绍
- docker基础4--docker的命令
- HTML超连接(a标记)
- pscad4.5 matlab,pscad4.2|pscad(电力系统仿真软件)下载v4.2 免费版 附安装教程 - 欧普软件下载...
- 微信小程序项目2(哔哩哔哩)
- PostgreSQL数据库——Pigsty grafana Ansible
- 计算机指法标准,标准盲打指法练习
- magicyang语录
- IPMI用户名密码忘记了怎么处理?
- 2021大纲新增词汇
- Kubernetes K8S之资源控制器Job和CronJob详解
- NYOJ-20 吝啬的国度【深搜】
热门文章
- Python之网络爬虫(Xpath语法、Scrapy框架的认识)
- Python验证码的生成
- .net core 3.1 mysql_.net core3.1 MVC使用sqlsugar方式操作mysql数据库
- python开发人员看什么书_python初学者看什么书
- python续行_python 控制台单行刷新,多行刷新
- Python实现倒计时按钮
- web前端三大主流框架_web前端三大主流框架
- CCF-CSP 稀疏向量问题(2020-6)
- 1.(单选题) HTML是指,《计算机应用基础》第五阶段在线作业(自测).doc
- java编程思想怎么样_读完java编程思想后的思考?