文章目录

  • Shell导入到HBase:
  • Hive与HBase集成:
  • Sqoop将Mysql移到HBase:
  • JavaAPI控制HBase:

Shell导入到HBase:

##通过hbase shell导入文档数据
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.separator=','  \
-Dimporttsv.columns="HBASE_ROW_KEY,order:numb,order:date" \
customer file:///home/vagrant/hbase_import_data.csv

Hive与HBase集成:

  • 将HBase作为Hive数据源

    • 让hbase实现类sql语句
  • 将Hive ETL数据存入HBase

    • 便于快速查询
  • 构建低延时得数据仓库

    • 利用HBase快速读写能力
    • 实现数据实时查询
create external table myhbtab(kw string, stuno string, username string,age string, likes string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping"=":key,base:stuno,base:username,base:age,externals:likes") tblproperties("hbase.table.name"="mydemo:userinfos");// key为rowkey 剩下来表字段,和列族列名一一对应
  • HBase作为Hive的数据源

创建Hive表映射HBase原有的表,实现HBase表更新后,Hive能获取到更新后的结果

  • Hive ETL结果存入HBase

创建Hive表映射HBase表,可以实现将Hive ETL后的结果被HBase访问

Sqoop将Mysql移到HBase:

 sqoop import --connect jdbc:mysql://localhost:3306/retail_db --username root --password hadoop --table products --columns "customernum, customername" --hbase-table customercontactinfo --column-family CustomerName --hbase-row-key customernum-m 1

JavaAPI控制HBase:

package com.wyw;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;import javax.ws.rs.GET;
import java.io.IOException;/*** @ClassName:HBaseClient* @Author WYW* @Date20/07/202011:38* @Description: TODO* @Version V1.0**/
public class HBaseClient {// 创建表操作public void createTable() throws Exception{// 1.创建配置Configuration conf = HBaseConfiguration.create();// 配置zk集群和端口conf.set("hbase.zookeeper.quorum","niceday");conf.set("hbase.zookeeper.property.clientPort","2181");// 2.创建连接Connection conn = ConnectionFactory.createConnection(conf);// 创建adminAdmin admin = conn.getAdmin();// 3.创建表描述信息HTableDescriptor student = new HTableDescriptor(TableName.valueOf("student"));// 4.添加列簇student.addFamily(new HColumnDescriptor("info"));student.addFamily(new HColumnDescriptor("score"));// 5.调用api进行建表操作admin.createTable(student);}// 判断表是否存在public void isTableExists() throws IOException {// 1.创建配置,配置zk集群和端口Configuration conf = HBaseConfiguration.create();// 配置zk集群和端口conf.set("hbase.zookeeper.quorum","niceday");conf.set("hbase.zookeeper.property.clientPort","2181");// 2.创建连接Connection conn = ConnectionFactory.createConnection(conf);// 创建adminAdmin admin = conn.getAdmin();System.out.println(admin.tableExists(TableName.valueOf("student")));}// 像表插入数据public void putDataTable() throws IOException {Configuration conf = HBaseConfiguration.create();// 配置zk集群和端口conf.set("hbase.zookeeper.quorum","niceday");conf.set("hbase.zookeeper.property.clientPort","2181");// 2.创建连接Connection conn = ConnectionFactory.createConnection(conf);// 3.创建table类Table student = conn.getTable(TableName.valueOf("student"));// 4.创建put类,放入rowkeyPut put = new Put(Bytes.toBytes("1001"));// 5.向put中添加列簇,列名,值,注意转换成字节数组put.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"),Bytes.toBytes("zahngsan"));// 6. 调用api进行插入数据student.put(put);}// 查看一条数据public void getDataFromTable() throws Exception {Configuration conf = HBaseConfiguration.create();// 配置zk集群和端口conf.set("hbase.zookeeper.quorum","niceday");conf.set("hbase.zookeeper.property.clientPort","2181");// 2.创建连接Connection conn = ConnectionFactory.createConnection(conf);// 3.创建table类Table student = conn.getTable(TableName.valueOf("student"));// 4. 创建get类Get get = new Get(Bytes.toBytes("1001"));// 5.调用api进行获取数据Result result = student.get(get);// 6.将返回的结果进行遍历输出Cell[] cells = result.rawCells();for (Cell cell : cells) {System.out.println("rowkey :" + Bytes.toString(CellUtil.cloneRow(cell)));System.out.println("列簇 :" + Bytes.toString(CellUtil.cloneFamily(cell)));System.out.println("列名 :" + Bytes.toString(CellUtil.cloneQualifier(cell)));System.out.println("值 :" +Bytes.toString(CellUtil.cloneValue(cell)));}}// 删除表操作public void dropTable() throws Exception {// 1.创建配置,配置zk集群和端口Configuration conf = HBaseConfiguration.create();// 配置zk集群和端口conf.set("hbase.zookeeper.quorum","niceday");conf.set("hbase.zookeeper.property.clientPort","2181");// 2.创建连接Connection conn = ConnectionFactory.createConnection(conf);// 3.创建adminAdmin admin = conn.getAdmin();// 4.调用Api禁用表admin.disableTable(TableName.valueOf("student"));// 5.删除表admin.deleteTable(TableName.valueOf("student"));}public static void main(String[] args) throws Exception {//      new HBaseClient().createTable();
//      new HBaseClient().isTableExists();
//      new HBaseClient().putDataTable();new HBaseClient().getDataFromTable();}
}

HBase 系列 (七)数据导入到HBase数据库的N种方式相关推荐

  1. 通过Spark生成HFile,并以BulkLoad方式将数据导入到HBase

    在实际生产环境中,将计算和存储进行分离,是我们提高集群吞吐量.确保集群规模水平可扩展的主要方法之一,并且通过集群的扩容.性能的优化,确保在数据大幅增长时,存储不能称为系统的瓶颈. 具体到我们实际的项目 ...

  2. odata数据绑定_如何使用用于SQL Server集成服务的OData源将数据导入SQL Server数据库

    odata数据绑定 介绍 ( Introduction ) A few days back I was looking at ways to access raw data from within M ...

  3. Sql Server数据库数据导入到SQLite数据库中

    背景:Sql Serve数据库中有个表格A,想把数据导入到SQLite数据库中 工具下载地址:点击打开链接 用法: 原作者地址及下载地址:点击打开链接

  4. 将Excel数据导入SQL Server数据库

    遇到了一个需求,需要将Excel中的数据导入SQL Server数据库中,当然,不是使用企业管理器之类的直接导入数据的那种,而是要做到程序中.本来我最初的考虑是将Excel中的数据读到dataset中 ...

  5. php实现sql server数据导入到mysql数据库_php实现SQL Server数据导入Mysql数据库(示例)...

    php将mssql的数据导入到mysql数据库中,代码: 代码示例: //连接SQL server数据库 $conn=mssql_connect("localhost"," ...

  6. 如何将excel表格内的数据导入至mysql数据库

    如何将excel表格内的数据导入至mysql数据库 当前mysql版本:5.5 创建Excel表格输入数据 注:第一行为数据表的列名(要保持一致) 将表格另存为.cvs格式的文件 再用editPlus ...

  7. mysql 导入dbm文件_DBM数据导入到mysql数据库方法

    本文章分享一篇关于DBM数据导入到mysql数据库方法,有需要的同学可以参考一下本实例. 首先说明一下,我以前使用PERL,保存文件 用DBM,有5万多条记录,每条记录有15个字段.现在想用MYSQL ...

  8. redis和sqlserver数据同步_SQLServer数据库之redis数据库的数据导入到SQLServer数据库中...

    本文主要向大家介绍了SQLServer数据库之redis数据库的数据导入到SQLServer数据库中,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. #!/usr/bin/ ...

  9. 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...

    如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...

  10. 1. 将数据导入到前置数据库中(MySQL)

    1. 将数据导入到前置数据库中(MySQL) 然后我们在用阿里云的开源工具datax将数据拉取到hive中 1.1 注意事项 在导入到MySQL中时导入的路径只能使用双斜线( \\ )如: --导入数 ...

最新文章

  1. ubuntu php session 删除,session_unset()和session_destroy()用法分析
  2. Java中关于==和equal的区别 以及equals()方法重写
  3. (NO.00003)iOS游戏简单的机器人投射游戏成形记(七)
  4. ubuntu编译内核重启出现:gave up waiting for root device
  5. 深入浅出WPF(2)——解剖最简单的GUI程序
  6. Apache、tomcat、Nginx常用配置合集
  7. 正则表达式 任意数字_作为运维还不会正则表达式?赶快看这篇学习一下
  8. html5 如何设置导航,HTML5导航标签正确用法
  9. MobileNetV3论文译读笔记
  10. 《黑镜》黑科技成真 | 解码脑电信号,AI重构脑中的画面
  11. ntp时间同步会导致mysql关闭吗_NTP 时间同步网络弱电系统安全监测平台研究
  12. 车辆销售系统用例_汽车销售管理系统UML建模分析.doc
  13. IOS 四舍五入 进一法 去尾法
  14. java自己写母版_Java 创建并用应用幻灯片母版
  15. linux下拷贝某一时间段的文件
  16. Leetcode 2029. 石子游戏 IX
  17. 华为手机语音通话时断时续原因
  18. 提取LSV中的高程数据在CAD中进行道路的方案设计流程
  19. 4.2.7. Aggregate Expressions
  20. 利用c/c++打造烟花表白程序,撩妹一撩一个准!

热门文章

  1. 从汶川地震看中国名企的企业社会责任(CSR)
  2. 一文读懂梯度下降算法
  3. poi电话号码导入问题
  4. three.js自定义材质 切线空间及阴影
  5. 深度图像和彩色图像对齐
  6. singleTask 特性
  7. tomcat启动时提示端口被占用解决办法
  8. Django常见数据库错误代码及原因
  9. Maven项目之运用Junit测试
  10. 大疆Mini1充电管家拆解分享