iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL分区表和HBase的关系是什么
  • 411
分享到

MySQL分区表和HBase的关系是什么

2024-04-02 19:04:59 411人浏览 泡泡鱼
摘要

Mysql分区表和HBase的关系是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  创建 MySQL 分区数据  DROP

Mysql分区表和HBase的关系是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

  创建 MySQL 分区数据

  DROP TABLE ord_order;

  -- 创建订单分区表

  CREATE TABLE ord_order(

  order_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '订单ID',

  user_id INT NOT NULL COMMENT '用户ID',

  Goods_id INT NOT NULL COMMENT '商品ID',

  order_price INT NOT NULL DEFAULT 0 COMMENT '订单实际价格(分)',

  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  PRIMARY KEY(order_id, create_time)

  )

  PARTITioN BY LIST (YEAR(create_time)*100 + MONTH(create_time))

  (

  PARTITION p201601 VALUES IN (201601),

  PARTITION p201602 VALUES IN (201602),

  PARTITION p201603 VALUES IN (201603),

  PARTITION p201604 VALUES IN (201604),

  PARTITION p201605 VALUES IN (201605),

  PARTITION p201606 VALUES IN (201606),

  PARTITION p201607 VALUES IN (201607),

  PARTITION p201608 VALUES IN (201608),

  PARTITION p201609 VALUES IN (201609),

  PARTITION p201610 VALUES IN (201610),

  PARTITION p201611 VALUES IN (201611),

  PARTITION p201612 VALUES IN (201612)

  );

  -- 插入相关数据

  INSERT INTO ord_order VALUES

  (NULL, 10000001, 11111111, 1000, '2016-01-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-01-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-01-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-01-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-01-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-02-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-02-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-02-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-02-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-02-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-03-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-03-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-03-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-03-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-03-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-04-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-04-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-04-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-04-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-04-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-05-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-05-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-05-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-05-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-05-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-06-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-06-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-06-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-06-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-06-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-07-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-07-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-07-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-07-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-07-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-08-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-08-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-08-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-08-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-08-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-09-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-09-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-09-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-09-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-09-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-10-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-10-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-10-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-10-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-10-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-11-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-11-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-11-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-11-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-11-13 05:00:50'),

  (NULL, 10000001, 11111111, 1000, '2016-12-13 01:00:10'),

  (NULL, 10000001, 11111112, 2000, '2016-12-13 02:00:20'),

  (NULL, 10000001, 11111113, 3000, '2016-12-13 03:00:30'),

  (NULL, 10000001, 11111114, 4000, '2016-12-13 04:00:40'),

  (NULL, 10000001, 11111115, 5000, '2016-12-13 05:00:50');

  -- 查看分区p201601数据

  SELECT * FROM ord_order PARTITION(p201601);

  -- 组合成的 row key

  SELECT CONCAT(user_id, 10000000000-UNIX_TIMESTAMP(create_time), goods_id)

  FROM ord_order PARTITION(p201601);

  结合HBase咯

  创建HBase表 ord_order

  由于版本兼容的问题,这边我需要先创建好HBase对应的表。不然会报不能自动创建 column family 的错误。

  使用 hbase shell 创建 ord_order 表

 hbase(main):033:0> create 'ord_order', {NAME => 'cf1'}

  使用 Sqoop 将mysql的ord_order 表的 p201601 分区的数据导入HBase表。

  /usr/local/sqoop/bin/sqoop import \

  --connect jdbc:mysql://192.168.137.11:3306/test \

  --username HH \

  --passWord oracle \

  --query 'SELECT CONCAT(user_id, 10000000000-UNIX_TIMESTAMP(create_time), goods_id) AS order_id, order_price, create_time FROM ord_order PARTITION(p201601) WHERE $CONDITIONS' \

  --hbase-table ord_order \

  --hbase-create-table \

  --hbase-row-key order_id \

  --split-by order_id \

  --column-family cf1 \

  -m 1

  导入成功后就可以在MySQL上面将相关分区删除,并且创建之后需要的分区:

  ALTER TABLE ord_order

  ADD PARTITION (PARTITION p201701 VALUES IN (201701));

  ALTER TABLE ord_order DROP PARTITION p201601;

  查看Hbase中导入的数据

  hbase(main):001:0> scan 'ord_order'

  ROW COLUMN+CELL

  10000001854736755011111115 column=cf1:create_time, timestamp=1479224942888, value=2016-01-13 05:00:50.0

  10000001854736755011111115 column=cf1:order_price, timestamp=1479224942888, value=5000

  10000001854737116011111114 column=cf1:create_time, timestamp=1479224942888, value=2016-01-13 04:00:40.0

  10000001854737116011111114 column=cf1:order_price, timestamp=1479224942888, value=4000

  10000001854737477011111113 column=cf1:create_time, timestamp=1479224942888, value=2016-01-13 03:00:30.0

  10000001854737477011111113 column=cf1:order_price, timestamp=1479224942888, value=3000

  10000001854737838011111112 column=cf1:create_time, timestamp=1479224942888, value=2016-01-13 02:00:20.0

  10000001854737838011111112 column=cf1:order_price, timestamp=1479224942888, value=2000

  10000001854738199011111111 column=cf1:create_time, timestamp=1479224942888, value=2016-01-13 01:00:10.0

  10000001854738199011111111 column=cf1:order_price, timestamp=1479224942888, value=1000

  5 row(s) in 0.5390 seconds

  ROW KEY 设计详解

  HBase中的row key为 user_id, 10000000000-UNIX_TIMESTAMP(create_time), goods_id 3个字段组成。

  这边值得注意的是 10000000000-UNIX_TIMESTAMP(create_time), 这样设计的原因是为了让订单能按时间的倒序排列, 这样就符合 越新的数据越先显示

  如: 现在需要对用户 10000001 的订单进行分页, 每页两条数据, 并且按时间的倒序排序(最新订单最先显示)

  hbase(main):003:0> scan 'ord_order', {COLUMNS=>['cf1:order_price'], ROWPREFIXFILTER=>'10000001', LIMIT=>2}

  ROW COLUMN+CELL

  10000001854736755011111115 column=cf1:order_price, timestamp=1479224942888, value=5000

  10000001854737116011111114 column=cf1:order_price, timestamp=1479224942888, value=4000

  点击下一页的数据:

  hbase(main):004:0> scan 'ord_order', {COLUMNS=>['cf1:order_price'], LIMIT=>3, STARTROW=>'10000001854737116011111114'}

  ROW COLUMN+CELL

  10000001854737116011111114 column=cf1:order_price, timestamp=1479224942888, value=4000

  10000001854737477011111113 column=cf1:order_price, timestamp=1479224942888, value=3000

  10000001854737838011111112 column=cf1:order_price, timestamp=1479224942888, value=2000

  3 row(s) in 0.0260 seconds

  上面获得了三行数据,在实际展现的时候去除第一行就好了,实际展示如下:

  10000001854737477011111113 column=cf1:order_price, timestamp=1479224942888, value=3000

  10000001854737838011111112 column=cf1:order_price, timestamp=1479224942888, value=2000

  点击上一页

  hbase(main):008:0> scan 'ord_order', {COLUMNS=>['cf1:order_price'], LIMIT=>3, STARTROW=>'10000001854737477011111113', REVERSED=>true}

  ROW COLUMN+CELL

  10000001854737477011111113 column=cf1:order_price, timestamp=1479224942888, value=3000

  10000001854737116011111114 column=cf1:order_price, timestamp=1479224942888, value=4000

  10000001854736755011111115 column=cf1:order_price, timestamp=1479224942888, value=5000

  3 row(s) in 0.0640 seconds

  上面同样获得了三条数据,我们需要去除第一行,让后按数据集合倒序显示

  10000001854737116011111114 column=cf1:order_price, timestamp=1479224942888, value=4000

  10000001854736755011111115 column=cf1:order_price, timestamp=1479224942888, value=5000

  ↓↓↓↓↓ 上面两行是集合数据 下面两行数倒序遍历集合的数据(也是最终显示的数据)

  10000001854736755011111115 column=cf1:order_price, timestamp=1479224942888, value=5000

  10000001854737116011111114 column=cf1:order_price, timestamp=1479224942888, value=4000

关于MySQL分区表和HBase的关系是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL分区表和HBase的关系是什么

本文链接: https://www.lsjlt.com/news/58148.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL分区表和HBase的关系是什么
    MySQL分区表和HBase的关系是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  创建 MySQL 分区数据  DROP ...
    99+
    2024-04-02
  • hbase和mysql的区别是什么
    HBase和MySQL是两种不同类型的数据库系统,具有以下区别: 数据模型: MySQL是关系型数据库管理系统(RDBMS),...
    99+
    2024-04-09
    hbase mysql
  • HBase和ApacheHadoop之间的关系是什么
    在HBase中,ZooKeeper扮演着重要的角色作为协调服务。具体来说,ZooKeeper在HBase中主要用于以下几个方面: ...
    99+
    2024-03-07
    HBase
  • hadoop和hbase有什么关系
    Hadoop和HBase都是Apache软件基金会项目的一部分,它们之间有一些关系,但是它们是两个不同的技术,各自有不同的用途。 H...
    99+
    2024-04-09
    hadoop hbase
  • MySQL中的分区表和临时表是什么
    这篇文章主要为大家展示了“MySQL中的分区表和临时表是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中的分区表和临时表是什么”这篇文章吧。临时表...
    99+
    2024-04-02
  • HBase和Redis的区别是什么
    这篇文章给大家分享的是有关HBase和Redis的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。HBase和Redis的功能上比较相似。都是nosql类型的数据库。但是...
    99+
    2024-04-02
  • redis和hbase的区别是什么
    小编给大家分享一下redis和hbase的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HBase和Redis的功能上...
    99+
    2024-04-02
  • HBase与HDFS之间的联系和区别是什么
    HBase是基于HDFS构建的分布式数据库,它使用HDFS作为底层存储系统来存储数据。HDFS是Hadoop分布式文件系统,用于存储...
    99+
    2024-03-15
    Hbase HDFS
  • MySQL多表的关系是什么
    MySQL多表的关系是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。多表之间的关系  表与表之间的关系,说的就是表与表之间...
    99+
    2024-04-02
  • mysql中分表与分区的区别是什么
    这篇文章将为大家详细讲解有关mysql中分表与分区的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一,什么是mysql分表,分区什么是分表,从表面...
    99+
    2024-04-02
  • mysql和Navicat的关系是什么
    这篇文章将为大家详细讲解有关mysql和Navicat的关系是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  MySQL是一个关系型数据库管理系统。而Navicat...
    99+
    2024-04-02
  • 启动和关闭hbase的方法是什么
    启动HBase的方法是通过启动HBase的master节点,可以使用以下命令启动HBase: $ start-hbase.sh 关...
    99+
    2024-04-02
  • pdo和mysql是什么关系
    PDO和MySQL之间的关系是,PDO是PHP的数据库访问抽象层,而MySQL是一种具体的关系型数据库管理系统,通过PDO可以方便地连接MySQL数据库,进行数据库查询和管理,而不需要关注具体的数据库类型和实现细节。本教程操作系统:Wind...
    99+
    2023-08-01
  • MySQL中分区表是什么意思
    这篇文章主要介绍MySQL中分区表是什么意思 ,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对于用户而言,分区表是一个独立的逻辑表,但是在底层由多个物理子表组成。实现分区的代码实际上...
    99+
    2024-04-02
  • HBase与Hive的区别是什么
    这篇文章主要介绍“HBase与Hive的区别是什么”,在日常操作中,相信很多人在HBase与Hive的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HBase与Hive的区别是什么”的疑惑有所帮助!...
    99+
    2023-06-03
  • mysql表的四种分区方式是什么
    这篇文章主要介绍“mysql表的四种分区方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql表的四种分区方式是什么”文章能帮助大家解决问题。1、什么是表分区?mysql数据库中的数据是...
    99+
    2023-06-30
  • linux和ubuntu区别是什么?有什么关系?
      Ubuntu、Linux是什么它们之间如何区别对于很多人来说都有这样的疑惑,今天带着你的疑问跟着小编来看看吧。  Ubuntu:是一个以桌面应用为主的开源gnu、Linux操作系统,Ubuntu是基于DebianGNU/Linux,支持...
    99+
    2023-06-05
  • hive分区表和分桶表有什么区别
    Hive分区表和分桶表是两种数据存储和管理的方式,有以下区别: 分区表:在Hive中,分区表是按照指定的列值进行分区存储数据的表...
    99+
    2024-03-01
    hive
  • HBase表的数据模型是什么
    本篇内容主要讲解“HBase表的数据模型是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HBase表的数据模型是什么”吧!HBase是运行在Hadoop集群上的一个数据库,与传统的数据库有严...
    99+
    2023-06-30
  • mysql表锁和行锁区别是什么
    小编给大家分享一下mysql表锁和行锁区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、表锁特点:偏向MyISAM存储...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作