热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySql与HBase之间数据的互导

这篇文章主要讲解了“MySql与HBase之间数据的互导”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“

这篇文章主要讲解了“MySql与HBase之间数据的互导”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySql与HBase之间数据的互导”吧!

在进行下面的步骤之前,请确保你的hadoop,hbase,hive,mysql,sqoop已经安装配置完好

此处我的配置如下:

hadoop-1.2.1

hbase-0.94.18

hive-0.12.0

mysql-5.5.37

sqoop-1.4.4

一.将mysql中的数据导入到hbase中,这一步相对来说是比较简单的

1.在mysql中建立一个teacher表,插入5组数据,我这里没有将表建立的太大,可以根据自身数据大小情况改变创建表的大小,表的结构如下图所示:

MySql与HBase之间数据的互导

2.在进行下一步之前,一定要确认mysql的jdbc已经拷贝到sqoop的lib目录下,此处我使用的是 mysql-connector-java-5.0.8-bin.jar,同时需要拷贝hbase目录下的hbase-0.94.18.jar和hbase的lib目录下的zookeeper-3.4.5.jar到sqoop的lib目录下,以上jar包,只要是适合自己版本的就好。

3.转到sqoop的目录下,执行命令:

$bin/sqoop import --connect jdbc:mysql://slave03/sqoop --username sqoop --password sqoop --table teacher --hbase-table myteacherhbase  --column-family info --hbase-create-table

上述命令行的含义:

$bin/sqoop import --connect jdbc:mysql://slave03(自己的机器名,可以是自己机器的ip地址)/sqoop(mysql中的database) --username 用户名 --password 密码 --table teacher(mysql中的table名字) --hbase-table myteacherhbase(导入到hbase中表的名字)  --column-family info --hbase-create-table(使hbase自己创建表)

4.1执行上述命令之前hbase中表的状况:

MySql与HBase之间数据的互导

4.2执行sqoop命令之后hbase里边表的状况:

MySql与HBase之间数据的互导

5.至此,mysql数据库中的数据导入到hbase中成功。

二.将hbase中的数据导出到mysql数据库中。

因为之前在网上查找过很多的信息,了解到hbase中的数据不能够直接导出到mysql数据库中,所以只能借助一个中介实现这个目的,我了解到有以下两种方法可以实现这个功能:

(1)将hbase中的数据导出到HDFS平台上,然后导入到mysql(此方法本人还没有试,只是了解到网上有人说可以)

(2)将hbase中的数据导出到hive(中介),然后通过sqoop将hive中的数据导入到mysql数据库中。

接下来,我介绍第二种方法:

  1. 因为之前将mysql中的teacher表导入到了hbase,我就直接用hbase中的这个myteacherhbase表进行以下操作。

  2. 在mysql中新建立一个myteacher表,用来接收hbase导出的数据。

    表结构如图:

    MySql与HBase之间数据的互导

  3. 在hive中创建连接hbase的外部表:


  4. hive> create external table myteacher_external(key int,value string)
        > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
        > WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")
        > TBLPROPERTIES("hbase.table.name" = "myteacherhbase");

这里我直接在创建外部表的时候指定了primary key,将id设为primary key.如图:

MySql与HBase之间数据的互导

可以查询到hbase中的数据,创建连接hbase外部表成功。

5.    在hive中新建一个内部表,将hive的external外部表数据导入到内部表。

hive>create table myteacher_inner(id int,name string);

建好之后,通过以下命令,执行将hbase中的数据导出到hive中:

hive> insert overwrite table myteacher_inner select * from myteacher_external;

如下图:

MySql与HBase之间数据的互导

相应的内部表中有了数据,说明hbase导出到hive中成功了。

6.    接下来,就是利用sqoop将hive中的数据导入到mysql中了,转到sqoop目录下,执行以下命令:

bin/sqoop export --connect jdbc:mysql://本机ip/sqoop --username sqoop --password sqoop  -m 1 --table myteacher --export-dir hdfs://slave03:9000/home/hadoop/hive/warehouse/myteacher_inner --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\\01" --input-lines-terminated-by "\\n"

说明:ip地址之后的sqoop是mysql的database,之后依次是用户名,密码,m 1 是进行一次map,table myteacher是之前建立的接收hbase数据的空表,后边的--export-dir是本机的hive之中表的HDFS地址。至于这地址之后的,是处理防止导入到mysql之中时,出现NULL的现象,导致原因是因为hive里存储的数据和数据之间的间隔与mysql中存储的数据和数据间隔不一致。所以需要处理一下。使mysql可以识别。

MySql与HBase之间数据的互导

sqoop执行命令成功。

7.    在mysql查看myteacher中的数据。

MySql与HBase之间数据的互导

查询成功。导入成功,操作完成啦!

感谢各位的阅读,以上就是“MySql与HBase之间数据的互导”的内容了,经过本文的学习后,相信大家对MySql与HBase之间数据的互导这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程笔记,小编将为大家推送更多相关知识点的文章,欢迎关注!


推荐阅读
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 在CentOS系统中部署与配置ZooKeeper详解 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
author-avatar
權yzq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有