目录
一、基本知识储备
二、前期准备
三、将数据导入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文件中增加一个属性配置,重启集群生效:
dfs.permissions.enabled false
- Verify User Home Permissions警告
在data-integration8.2/plugins/pentaho-big-data-plugin/hadoop-configurations/hdp30/config.properties文件末尾添加一行 "authentication.superuser.provider=NO_AUTH"
三、将数据导入MongoDB1、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数据迁移至Hbase1、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创建映射表,成功查询到了表中的数据
创作不易,若喜欢的话,请点个赞吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)