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

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 表中数据属于多个 列簇,只能通过多条指令分批导入。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql跨表查询_白话django之ORM的查询语句

教程源码:z991/django_turital在日常开发中,数据库的增删改查(CDUR)中,查询需求偏多,所以查询的语法比增删改操作多得多,尤其是跨表关联查询,可以让代码精简很多年。直接上代码吧&am…

java对象怎么创建_java对象是怎么创建出来的

1.使用new关键字这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。Employee emp1 new Employee();0: new #19 // class org/programming/mitra/exercises/Employee3: dup4: invokespecial #21 // Method org/…

看不懂论文代码怎么办_学位论文中的公式排版(制表位+mathtype+域)

写在前面为什么把公式排版单独拉出来写一篇文章呢?因为公式排版实在是太难了。公式居中标号右对齐,简直反人类好么。在学校期间一直寻找方便的公式排版自动编号方法,但搜索出来的大多只是用到了制表位,公式标号还要自己敲。最后毕…

利用trunk实现vlan内通信_实现不同VLAN间通信——单臂路由

单臂路由是一种实现不同VLAN间通信的技术,其方法是在虚拟机内接口上配置虚拟子接口。该技术是一种应急技术,仅仅用于网络预算不足,无力购买三层交换机,或者网络规模很小的情况下使用。一、实验路由器只需要一个端口和交换机(二层)…

java dispatchevent_java事件处理机制

java中的事件机制的参与者有3种角色:1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中2.event source:具体的接受事件的实体&#xff0…

eq值 推荐算法_C++实现十种排序算法

十种排序算法&#xff1a;选择排序插入排序冒泡排序希尔排序快速排序的三种实现方法归并排序堆排序&#xff08;大顶堆&#xff09;计数排序基数排序&#xff08;待实现&#xff09;桶排序&#xff08;待实现&#xff09;#include <bits/stdc.h> using namespace std; vo…

python读取tiff文件进行波段计算_python+tifffile之tiff文件读写方式

背景使用python操作一批同样分辨率的图片&#xff0c;合并为tiff格式的文件。由于opencv主要用于读取单帧的tiff文件&#xff0c;对多帧的文件支持并不好。通过搜索发现了两个比较有用的包&#xff1a;TiffCapture和tifffile。两者都可用pip安装。其中前者主要用于读取tiff文件…

java 线程停止在那个为止_java停止线程

本文将介绍jdk提供的api中停止线程的用法。停止一个线程意味着在一个线程执行完任务之前放弃当前的操作&#xff0c;停止一个线程可以使用Thread.stop()方法&#xff0c;但是做好不要使用它&#xff0c;它是后继jdk版本中废弃的或者将不能使用的方法&#xff0c;大多数停止一个…

java中的action是指什么_Struts2【开发Action】知识要点

前言前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理Action开发的三种方式在第一次我们写开发步骤的时候&#xff0c;我们写的Action是继承着ActionSupport类的...为啥我们继承了ActionSupport类呢&#xff1f;下面我就会讲解到继承Action…

hql 查询条件 set集合_Redis从入门到深入-Sorted_set的value

1. sorted_set 类型新的存储需求&#xff0c;数据排序有利于数据的有效展示&#xff0c;需要提供一种可以根据自身特征进行排序的方式需要的存储结构&#xff1a;新的存储模型&#xff0c;可以保存可排序的数据sorted_set类型&#xff1a;在set的存储结构基础上添加可排序字段2…

pdm生成java_PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换

本篇文章主要介绍了PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换 超详细过程(图文)&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下1.软件准备软件&#xff1a;Navicat 11.1&#xff0c;Powerdesigner 152.安装步骤第一步&…

python逐步回归筛选变量_Python实现逐步回归(stepwise regression)

逐步回归的基本思想是将变量逐个引入模型&#xff0c;每引入一个解释变量后都要进行F检验&#xff0c;并对已经选入的解释变量逐个进行t检验&#xff0c;当原来引入的解释变量由于后面解释变量的引入变得不再显著时&#xff0c;则将其删除。以确保每次引入新的变量之前回归方程…

java里面如何加入高级的东西_如何成为一名Java高级架构师

近些年来互联网快速发展&#xff0c;现阶段的数据量和高并发的诉求&#xff0c;引起了不少传统的技术人员的力不从心&#xff0c;企业愈发关注到了系统架构的重要性&#xff0c;既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的领导型人物——Java架构师应…

mysql获取最好成绩对应数据的其他项_开源数据同步神器——canal

前言如今大型的IT系统中&#xff0c;都会使用分布式的方式&#xff0c;同时会有非常多的中间件&#xff0c;如redis、消息队列、大数据存储等&#xff0c;但是实际核心的数据存储依然是存储在数据库&#xff0c;作为使用最广泛的数据库&#xff0c;如何将mysql的数据与中间件的…

java怎么使用floor_Java floor() 方法

floor() 方法可对一个数进行下舍入&#xff0c;返回给定参数最大的整数&#xff0c;该整数小于或等给定的参数。语法该方法有以下几种语法格式&#xff1a;double floor(double d)double floor(float f)参数double 或 float 的原生数据类型。返回值返回 double 类型数组&#x…

python外部库是什么_如何使用Portable Python安装外部库?

由于管理员权限,我无法在我的机器上安装Python,但我成功下载/打开了Portable Python.我在Windows 7 64位机器上.我怎样才能使用以前的外部库,比如Numpy或Gmpy&#xff1f;解决方法:easy_install正在尝试从源代码安装. gmpy和gmpy2是C扩展,需要兼容的C编译器和其他库(GMP;以及gm…

java创建目录时带权限_java – 无法在外部存储中创建目录,尽管权限显然设置正确...

我有在我的清单文件中,但是尝试创建一个目录时我失败了Log.d(LOG_STRING, android.os.Environment.getExternalStorageState() );java.io.File folder new java.io.File(Environment.getExternalStorageDirectory() java.io.File.separator "test");boolean succe…

window访问不到linux的activemq_springboot整合开源项目测试拦截接口访问的频率

本节目标本篇文章主要是介绍以下springboot整合开源项目&#xff0c;实现反爬虫接口防刷的demo&#xff0c;额外的介绍一下axios的基本用法&#xff1b;所以本篇文章阅读起来相对轻松。OK&#xff0c;下面开始整合.引入项目依赖cn.keking.project kk-anti-reptile …

java 数据库外键查询_oracle中查询所有外键引用到某张表的记录

其实查找这篇文章 我主要用的sql 是这句 select * from user_cons_columns t where t.constraint_name like FK_CTS_CONT_REINS__CRR;起因&#xff1a;系统测试的时候发现如果某条记录已经被引用了&#xff0c;这个时候删除这条记录会引起数据不一致&#xff0c;系统会报错。…

sql server限制查询条数_18. Django 2.1.7 查询集 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。不管什么查询&#xff0c;返回的结果都基本是查询集QuerySet&#xff0c;如下&#xff1a;In [16]: MiddlewareInfo.objects.all()Out[16]: 1)>, 2)>,…