HBase 数据模型

Namespace: 命名空间

类似于关系型数据库中的 database schema

Table: 表

一个 Namespace 下有多个表,一个表可以包含多个行

Row: 行

在 HBase 中 Row 由一个 Row Key 和一个或多个列及其值组成,数据值的存储按照 Row Key 的字典顺序存储的。

Column: 列

在 HBase 中, 每个列有它所属的 Column Family(列簇), 以及Column Qualifier(列修饰符), 列名组成是 Column Family:Column Qualifier

Column Family: 列簇

在 HBase 中将列进行分类,每个列都有它所属的列簇,列簇 把列和相应的值物理上联合在一起。创建表的时候,必须指定至少一个 列簇。每个列出是一个存储属性的集合,

Column Qualifier: 列修饰符

列簇 和 列修饰符 才是实际意义上的列唯一标识,假设存在 列簇 content, 可以存在 列修饰符 xml, 组成一个唯一的列标识 content:xml;创建表的时候,列簇 已经被指定了,但是 列修饰符 是可变的,可以再 put 指令中随意指定属于 列簇 的 列修饰符。

Cell

一个Cell是行,列簇和列修饰符的组合,并且包含一个值和时间戳,时间戳代表着值的版本。

Timestamp(时间戳)

一个时间戳是连同值一起被写入的,是值版本的唯一标识,默认情况下,时间戳表示数据写入时RegionServer的时间,但是当你在写数据到Cell的时候,你可以指定一个不同的时间戳。

HBase 常用指令1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16create_namespace 'n1' // 创建一个 namespace n1

list_namespace // 列出所有的 namespace

create 'n1:t1', 'CF1', 'CF2' // 创建表 t1

list_namespace_tables 'n1' // 列出 namespace n1 下的所有 table

describe 'n1:t1' // 查看表结构

>put 'n1:t1', 'rk', 'CF1:name', 'test' // 往表 n1:t1 中 row key 是 rk 的行中插入列名称是 CF1:name 的值 'test'

>get 'n1:t1', 'rk' // 获取表 'n1:t1' 中 row key 是 rk 的所有数据

>scan 'n1:t1' // 模糊查看表 n1:t1

>scan 'n1:t1', FILTER=>"ColumnPrefixFilter('name') AND ValueFilter(=,'substring:test')" // 模糊查询,列修饰符前缀为name 且值中包含字段 test 的数据

>delete 'n1:t1', 'rk', 'CF1:name' // 删除 row key 是 rk 列 `CF1:name` 的数据

>disable 'n1:t1' // 禁用表 n1:t1,被被删除之前必须先被禁用

>is_enabled 'n1:t1' // 查看表 n1:t1 是否可用

>is_disabled 'n1:t1' // 查看表 n1:t1 是否被禁用

>enable 'n1:t1' // 启用表 n1:t1

>drop 'n1:t1' // 删除表 n1:t1,注意:只能删除被禁用的表

>drop_namespace 'n1' // 删除命名空间 n1,注意:只能删除没有表的 namespace

sqoop 导出 mysql 数据到 HBase1

2export HADOOP_CLASSPATH=/absolute/path/to/mysql-connector-java-5.1.15.jar

sqoop import --connect jdbc:mysql://ip:port/database_name --username 'username' --password 'password' --table 'table_name' --columns "id,name,code,description" --hbase-table 'test:hbase_table_name' --hbase-create-table --hbase-row-key 'id,code' --column-family info

上述命令行解析

“1. 设置 HADOOP_CLASSPATH

首先需要设置 HADOOP_CLASSPATH,值是 mysql-connector-java-5.1.15.jar 的绝对路径,否则会报错:java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver--connect

连接数据库的url,从这个数据库中导出数据

--username

数据库用户名

--password

数据库密码

--table

导出数据的源数据库表

--columns

本次导出的数据,可以一次导出多列,用逗号分隔,导出的列在hbase 中属于 --column family 参数指定的列簇,列名称是 column family:mysql表中的列名,需要注意的是,如果没有指定参数 --hbase-row-key,在hbase 表中的row key 将是 --columns 中第一列。

--hbase-table

本次导入数据的 hbase 表,需要注意的是导入数据的hbase 表可以不存在,但是hbase 表所属的 namespace 必须是存在的,否则会报错:Import failed: org.apache.hadoop.hbase.NamespaceNotFoundException: org.apache.hadoop.hbase.NamespaceNotFoundException: 'namespace'

--hbase-create-table

如果导入数据的表不存在,则创建该表

--hbase-row-key

设置 hbase 中的 Row Key,参数值是mysql 表中的列名,可以设置多个列合并成 Row Key, 用逗号分隔

“10. --column-family

指定导入数据所属的列簇,每次导入数据只能导入属于同一个列簇 的数据,如果 mysql 表中数据属于多个 列簇,只能通过多条指令分批导入。

注意:上述指令没有指定列分隔符和行分隔符,默认的列分隔符是 '

mysql hbase 同步_HBase 简介和使用 Sqoop 同步 Mysql 数据到 HBase相关推荐

  1. python链接hbase模块_HBase实战(1):使用Python连接Hbase数据库

    来源于 https://blog.csdn.net/duan_zhihua/java/article/details/80622166 使用Python连接Hbase数据库 1,Hbase下载. 下载 ...

  2. mysql结构改写为hbase表_HBase表描述和修改

    描述 该命令返回表的说明.它的语法如下: hbase>describe'table name' 下面给出的是对emp表的 describe命令的输出. hbase(main):006:0> ...

  3. python etl工具 sqoop hive_python脚本 用sqoop把mysql数据导入hive

    转:https://blog.csdn.net/wulantian/article/details/53064123 用python把mysql数据库的数据导入到hive中,该过程主要是通过pytho ...

  4. java大数据组件HBase

    什么是HBase: 是一个非关系型数据库(稀疏矩阵) 关系型数据库:有固定的列,每一列的数据类型明确 非结构化数据,半结构化数据. 存储的目标数据 数据量大 结构简单 基于key的快速查找能力 可以面 ...

  5. Sqoop 同步数据到mysql, Can't parse input data: '\N'

    Sqoop 同步数据到mysql Sqoop  从hdfs 同步数据到mysql 是我们常常遇到的事情 同步分为 分区表同步和非分区表同步 需要注意以下几点 1. hive 中的表 必须是textfi ...

  6. 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据

    通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据\ 下文将重点说明通过Sqoop实现Mysql与HDFS互导数据,Mysql与Hbase,Oracle与Hbase的互 ...

  7. 利用Sqoop将MySQL海量测试数据导入HDFS和HBase

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.安装Sqoop 1.下载sqoop,解压.文件夹重命名 wget http://mirror.bit.edu.cn/apache/sqoop/1 ...

  8. sqoop将hbase数据导入mysql_Sqoop将mysql数据导入hbase的血与泪

    Sqoop将mysql数据导入hbase的血与泪(整整搞了大半天) 版权声明:本文为yunshuxueyuan原创文章. 如需转载请标明出处: https://my.oschina.net/yunsh ...

  9. sqoop mysql where_Sqoop基本语法简介

    1.查看命令帮助 [hadoop@hadoop000 ~]$ sqoop help usage: sqoop COMMAND [ARGS] Available commands: codegen Ge ...

最新文章

  1. 找不到或无法加载主类 org.jivesoftware.openfire.starter.ServerStarter
  2. python数学公式代码导入_NumPy 数学函数及代数运算的实现代码
  3. 网络演算(Networkcalculus)
  4. 你不知道的 字符集和编码(编码字符集与字符集编码)
  5. discuz加密解密,可参考下
  6. 哨兵1号(sentinel 1)数据各参数介绍
  7. 如何在线免费caj转word
  8. 2018浙江大华股份有限公司-高级C/C++软件开发工程师面试准备
  9. 多级指针—为快捷方式创建快捷方式
  10. 苹果计算机取消用户名和密码进入不,苹果手机刷机过后进不了桌面要id账号和密码但是忘记了怎么处理?...
  11. Leetcode刷题100天—5855. 找出数组中的第 K 大整数(优先队列)—day22
  12. 网线线序和插座插头配线规则和光纤接口分类
  13. 计算机学院毕业礼物,史上最全毕业礼物攻略,绝对不能错过!
  14. c语言中u8,u16,u32和int区别
  15. 备忘_命令行查看电池损耗
  16. 常用地图投影转换公式
  17. FlyMcu串口下载
  18. SpringBoot强制下载文件
  19. EasyAR_实现扫描识别图播放视频
  20. format在java_java Format什么意思

热门文章

  1. 复习----使用链表实现队列(先进先出)及迭代
  2. MyEclipes 2016 CI 6 安装
  3. win10去除快捷小箭头_win10操作系统小技巧之键盘快捷键使用
  4. c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法
  5. 模拟器不全屏_puNES 适用于 Windows 和 Linux 的开源 NES 模拟器
  6. python只读模式可以打印嘛_只读python属性?无法打印对象
  7. SAP ABAP打印MM采购发票打印开发
  8. js数字转中文大写支持负数
  9. java问题,(x.equals(y) == true)有相同的hashCode 应该是不一定
  10. Highcharts双饼图使用实例