kettle MongoDB数据迁移至Hbase

目录

一、基本知识储备

二、前期准备

三、将数据导入MongoDB

四、MongoDB数据迁移至Hbase


😊 加个关注,后续上新不错过~

一、基本知识储备

1、MongoDB

MongoDB基本概念:

  • 数据库(database)
  • 集合(collection)
  • 文档(document)

MongoDB基本指令:

连接MongoDB:mongo IP:27017

显示所有数据库: show dbs/ show databases

进入指定数据库名: use 数据库名(若没有该数据库,则自动创建)

查看当前所在数据库ming: db

查看当前数据库所有集合: show collections

查看集合中所有记录:db.表名.find({})

当前数据库下创建集合:db.createCollection("集合名")

删除指定集合:db.集合.drop()

删除所在数据库:db.dropDatabase()

删除所在集合:db.collection.drop()

2、Hbase

Hbase的启动:hbase shell

查看Hbase中所有表:list

创建表:create '表名','列簇'

举例:

create 'test_table','0'
put 'test_table', 'row001','0:name','Jane' 
put 'test_table', 'row002','0:name','Tom'
put 'test_table', 'row003','0:name','Bill'

可使用scan扫描表

要删除某个表,必须要先禁用表

禁用表: disable '表名'

删除表: drop '表名'

更新操作:在HBase中,也是用put命令来进行数据的更新,语法与之前的添加数据一模一样

在HBase中,可以使用delete命令来将一个单元格的数据删除。语法格式如下:

delete '表名','rowkey','列簇:列'

举例:delete 'ORDER_INFO','000001','C1:STATUS'

删除整行数据

delete命令可以将指定rowkey对应的所有列全部删除。

语法:delete '命令','rowkey'

二、前期准备

1、Excel上新建一张表,后缀名为xlsx,放至桌面

2、在MongoDB上建立一个名为temp的数据库,并建立集合test

3、在Hbase上创建一张名为TEST的表

4、设置Hadoop环境

(我这里使用的kettle版本为8.2)

  • 集群上下载配置文件复制到Kettle的~/data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/hdp30/目录下,覆盖原来自带的core-site.xml、hdfs-site.xml、hive-site.xml、yarn-site.xml、mapred-site.xml 5个文件。
  • 在工具 -> Hadoop Distribution 中选择 “HortonWorks HDP 3.0.x”

可在hadoop-configurations文件夹下查看,分别对应上图中的Shim

  • 修改/data-integration8.2/plugins/pentaho-big-data-plugin/plugin.properties中 active.hadoop.configuration,指向对应shime(hdp30)

  • 重新启动spoon

5、kettle创建一个Hadoop集群连接

1、给集群起个名字 【Cluster name】

2、【Storage】选择HDFS

3、配置【HDFS】连接信息:

如果你的集群未开启NameNode HA,那么【Hostname】和【Port】如实填写即可,注意【Port】可不是 50070 这个 web 端口。如果开启了NameNode HA,那么【Hostname】这里就填写 HDFS 的 Namespace(命名空间),命名空间即为core-site.xml中fs.defaultFS去掉hdfs://后的的属性值,【Port】一定要留空。集群未配置访问认证的话,【Username】和【Password】不用填写;

我这里开启了,我的core-site.xml文件是这样子的

那么HDFS连接为这样

4、配置【JobTracker】

如果 ResourceManager 未配置 HA,则【Hostname】和【Port】如实填写。如果配置了 HA,则【Hostname】这里需要将所有 ResourceManager 的主机地址都填写上,中间使用英文逗号分隔,【Port】一定要留空!

5、配置【Zookeeper】

【Hostname】这里需要将集群中所有的 Zookeeper 主机地址填写上,中间使用英文逗号分隔,【Port】如实填写;

6、配置【Oozie】

若没有安装,则留空

7、配置【Kafka】

需要填写bootstrap-server所在主机地址以及运行端口,多个之间使用英文逗号分隔。未安装 Kafka 的话留空即可。

8、配置完成以后,点击【测试】按钮可以测试一下集群连接,如果配置无误的话,可以看到全是绿色的对勾:

Hadoop集群连接常见报错与警告解答:

  • Active Shim Load】出现报错或者警告,需要检查是否在Spoon工具栏 -> 工具 -> Hadoop Distribution中设置了对应的 Hadoop 平台;

  • 【Shim Configuration Verification】报出警告:The Hadoop File System URL does not match the URL in the shims core-site.xml,这个时候就需要检查【HDFS】的【Hostname】是否与core-site.xml中fs.defaultFS属性值一致;

  • 【User Home Directory Access】报错:Could not read directory contents,是因为 Kettle 是使用当前操作系统用户去访问 HDFS 的,如果 HDFS 上/user/目录下没有该用户的目录,则该项检测就会失败。解决办法:手动在 HDFS 上/user/目录下创建以当前操作系统用户名命名的文件夹即可(电脑用户名)。

假如我的用户名为Darlene,则创建文件夹的方法为

创建成功后,可以在user目录下查看

  • 【Root Directory Access】报错,是因为 Kettle 访问 HDFS 的用户没有读写 HDFS 跟目录的权限,可通过修改集群配置文件解决:在hdfs-site.xml文件中增加一个属性配置,重启集群生效:
<property>  
 <name>dfs.permissions.enabled</name>   
<value>false</value> 
</property>

  • Verify User Home Permissions警告

在data-integration8.2/plugins/pentaho-big-data-plugin/hadoop-configurations/hdp30/config.properties文件末尾添加一行 "authentication.superuser.provider=NO_AUTH"

三、将数据导入MongoDB

1、ITerm上直接使用命令行导入

(1) 将xlsx后缀名改为CSV

( 注意:如果Excel文件中有中文、特殊符号会抛出异常,这种情况下在执行mongoimport命令前,需要将该CSV文件编码转为UTF-8,如上图所示。)

改后如图所示:

(2)打开iterm

输入命令将表中的数据导入MongoDB

mongoimport —host IP —port 27017  —db 数据库名 -c 集合名 —type csv —headerline —file /Users/Kilig/Desktop/test.csv

可以看到成功将数据导入MongoDB

(3)通过NoSQLBooster可以查看导入的数据,如图所示:

2、使用kettle将数据从Excel文件导入MongoDB

(1)先将方法一导入的数据删除,重新建立一个集合

(2)打开kettle新建一个转换

a.Excel输入设置如下:

b.MongoDB输入设置如下

c.最后点击运行转换即可,我们可以看到数据成功的导入MongoDB

四、MongoDB数据迁移至Hbase

1、MongoDB Input步骤设置如下:

2、Hbase Output设置

这里设置mapping名称(自己起的),将_id设置为主键,这里我为了查询时建立映射的方便,将所有的数据类型都改为String型,实际过程中可按需求变化

这里我们可以看到mapping成功创建

3、最后点击运行,可以看到数据已经成功地导入Hbase中TEST表中了

3、在HBase中使用scan查看导入的数据

4、使用create语句在Phoenix中创建映射表

create table "TEST" ("_id" VARCHAR PRIMARY KEY, "base"."name" VARCHAR, "base"."id" VARCHAR, "base"."age" VARCHAR, "base"."sex" VARCHAR, "base"."address" VARCHAR) column_encoded_bytes=0;

至此,我们已成功将数据从MongoDB中迁移至Hbase,并在Phoenix创建映射表,成功查询到了表中的数据

创作不易,若喜欢的话,请点个赞吧😄

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值