Oracle数据导入Hbase操作步骤
——本文非本人原创,为公司同事整理,发布至此以便查阅
一、入库前数据准备
1、入hbase详细要求及rowkey生成规则,参考文档“_入HBase库要求 20190104.docx”。
2、根据标准库中的数据,生成带有rowkey的视图。
参照159数据库hubei_std用户下的p_getRowKey1存储过程,生成该用户下 所有表带有rowkey的视图。
注:运行存储过程时,需传入医院编码和采集次数。
3、在进行正式入库前,先以医院编码在hbase中建立命名空间(hbase shell 进 入命令界面):
create_namespace 'HB1'
4、在该命名空间下建立所有标准表的表名,如:
列族名称参照“入hbase统计表.xlsx”
create 'HB1:inp_orders’, 'f', SPLITS=>['e','i','m','q','u']
HB1:命名空间
Inp_orders:标准表名
f:列族
SPLITS:分区
注:建表时,与标准表名一致。
5、操作完以上步骤以后,开始进行入库操作。
二、入库开始
1、需先将oracle的ojdbc6.jar放入到该目录:
/opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/lib/sqoop/lib
2、sqoop连接到oracle数据库:
sqoop list-tables --connect jdbc:oracle:thin:@172.16.0.159:1521:orcl --username hubei_std --password hubei_std 若连接成功,则显示hubei_std下的表。
3、将之前生成的视图的数据,导入hbase
sqoop import --append --connect jdbc:oracle:thin:@172.16.0.159:1521:orcl --username hubei_std --password hubei_std -m 1 --table INPBILLDETAIL --columns ID,NAME,AGE --hbase-create-table --hbase-table HB1:inp_bill_detail --hbase-row-key ROWKEY --column-family f
-m 1:指定1个map进行入库操作,若大于1,则需在该语句后加上--split-by column(column是指定oracle的源表按该字段进行分割,如指定列为 PATIENT_ID,m指定为2的话,则将PATIENT_ID的值均分2份进行入库)。
--append:如有该参数,则可以不指定--columns 参数。
--hbase-create-table:如已在hbase中建表,则可以不指定该参数。
--hbase-row-key:指定源表中,哪一列为rowkey
注:--hbase-table 参数,需在表名前加上命名空间
三、入库完成核对
1、核对入库条数是否正确:
hbase org.apache.hadoop.hbase.mapreduce.RowCounter ‘HB1:
pat_visit_master’
2、查看数据情况(两条记录):
get_table(‘HB1:pat_visit_master’).scan LIMIT=>2
3、进入CDM管理界面,在hue中查看数据情况:
Hue-->Web UI-->主菜单-->HBase-->进入对应的表看数据
4、入Hbase完成后大小对比:
湖北:
oracle:28.84G
Hbase:177.11G
查询方法:
Oracle:select sum(bytes)/1073741824 from user_segments
Hbase:hadoop fs -ls /
hadoop fs -ls /hbase
hadoop fs -ls /hbase/data
hadoop fs -ls /hbase/data/HB1
hadoop fs -du -h /hbase/data/HB1/
5、将入完hbase的数据拷贝到szyl命名空间下:
su hdfs
hbase org.apache.hadoop.hbase.mapreduce.CopyTable--new.name=
szyl:inp_orders HB1:inp_orders
四、入库速度
1、以湖北省肿瘤inp_orders表为实验表,该表31097227条记录:
1、-m 1 用时:1973秒,速度15761.39条/秒
2、-m 2 用时:5006秒,速度6211.99条/秒
以湖北省肿瘤inp_bill_detail表为实验表,该表113271245条记录:
1、-m 1 用时:8926秒,速度12690.03条/秒
2、-m 3 用时:9012秒,速度12568.93条/秒
inp_bill_detail:113271245条
inp_orders:31097227
pat_visit_master:273300
inp_settle_master:283025
2、开封市肿瘤数据入hbase:
exam_master:41630
exam_report:24336
his_cells:3833
his_organization:4208
inp_bill_detail:14385379
inp_orders:6024317
inp_settle_master:41830
lab_result:764482
五、遇到问题
1、在导入数据时,设定-m为3,则只有一个map执行,导入的数据量只有总数 据的三分之一,另外两个map不执行:
sqoop import --append --connect jdbc:oracle:thin:@172.16.0.159:1521:orcl --username hubei_std --password hubei_std -m 3 --table INPBILLDETAIL --hbase-table HB1:inp_bill_detail --hbase-row-key ROWKEY --column-family f --split-by PATIENT_ID
在指定--split-by参数时,不能指定虚列如:rownum 建议指定主键或唯一键
2、在创建表时,防止写成以下语句:
create ‘HB1:pat_visit_master’,’p’,SPLIT=[‘e’,’i’,’m’,q’,’u’]
create ‘HB1:pat_visit_master’,’p’,SPLITS=[‘e’,’i’,’m’,’q’,’u’]
以上两种写法,会将分区当成列族建在表中。
六、常用命令
1、删除命名空间:
drop_namespace ‘HB1’
2、查看命名空间:
describe_namespace ‘HB1’
3、列出所有命名空间:
list_namespace
4、查看命名空间下的所有表:
list_namespace_tables ‘HB1’
5、删除表:
disable ‘HB1:inp_orders’
drop ‘HB1:inp_orders’
6、删除表多的所有记录:
truncate ‘HB1:inp_orders’
7、查看表结构:
desc ‘HB1:inp_orders’
8、查询表数据:
scan ‘HB1:inp_orders’
9、查询现在执行的job:
hadoop job -list
Oracle数据导入Hbase操作步骤的更多相关文章
- Oracle 数据导入导出操作 (转)
Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢 ...
- oracle数据导入的常用命令
oracle 中数据库完全导入导出:cmd命令行模式 oracle数据库cmdfile数据库服务器constraints Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.ex ...
- sqoop将oracle数据导入hdfs集群
使用sqoop将oracle数据导入hdfs集群 集群环境: hadoop1.0.0 hbase0.92.1 zookeeper3.4.3 hive0.8.1 sqoop-1.4.1-incubati ...
- Oracle数据导入导出
Oracle数据导入导出imp/exp 在oracle安装目录下有EXP.EXE与IMP.EXE这2个文件,他们分别被用来执行数据库的导入导出.所以Oracle数据导入导出imp/exp就相当与ora ...
- 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL[转]
使用MySQL Migration Toolkit快速将Oracle数据导入MySQL上来先说点废话本人最近在学习一些数据库方面的知识,之前接触过Oracle和MySQL,最近又很流行MongoDB非 ...
- Oracle数据导入导出imp/exp sp2-0734:未知的命令开头'imp...解决方法
Oracle数据导入导出imp/exp sp2-0734:未知的命令开头'imp...解决方法 sp2-0734:未知的命令开头'imp 忽略了剩余行默认分类 www.2cto.com 应该 ...
- Oracle数据导入导出imp/exp(转)
在oracle安装目录下有EXP.EXE与IMP.EXE这2个文件,他们分别被用来执行数据库的导入导出.所以Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 一.Oracle ...
- sqoop将mysql数据导入hbase、hive的常见异常处理
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10700700.html,否则将追究法律责任!!! 一.需求: 1.将以下这张表(test_ ...
- 使用sqoop将MySQL数据库中的数据导入Hbase
使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...
随机推荐
- GDAL——命令使用专题——gdalinfo命令
GDAL——命令使用专题——gdalinfo命令 前言 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用 ...
- 【转载】如何查看Mysql是否已经安装
原文地址: https://jingyan.baidu.com/article/fd8044fa2ecaf35030137a42.html MySQL是关系型数据库管理系统,是目前最流行的关系型数据库 ...
- RPA与AI_新技术能给企业业务流程带来怎样的价值?
RPA助力于流程自动化蜕变 RPA是Robotic Process Automation的缩写,意为: 将机器人作为虚拟劳动力,依照预先设定的程序与现有用户系统进行交互并完成设定好的任务流程.RPA可 ...
- 一款堪称完美的编程字体Source Code Pro
对于程序员来说,好的字体应该满足的基本条件: 字母和数字易于分辨,如: 英文字母o 和 阿拉伯数字 0 ,或者 英文字母 l 和 阿拉伯数字 1 ,两个单引号 '' 和双引号 ”. 字体等宽,保持对齐 ...
- 7. Reverse Integer Add to List★
题目内容: Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 题目分 ...
- spark提交jar包时出现unsupported major.minor version 52.0错误的解决方案
一.问题: 最近在spark集群上做一个项目,打包提交jar包时,出现了unsupported major.minor version 52.0的报错,而在local模式运行却能正常运行! 二.错误原 ...
- C入门注意事项
C语言入门应该注意什么 进入IT行业,很多人一开始接触的都是C语言,C语言可以说是一门基础课程了,只要有了C语言的基础,那么以后不管是学什么语言都会比较容易上手.同时在学习其它语言时也可以 ...
- 阶段02JavaWeb基础day04mysql
数据库--MySql 数据仓库.就与我们之前学过的纯文本,properties这些技术一样.用来保存数据.并提供对数据进行增删改查的操作.我们以后做项目时,项目中的数据都是保存在数据库中的.//--- ...
- GridControl 主从模式(Master-detail)子表格获取行数据
今天遇到一个问题,gridcontrol使用主从表的时候,在子表中获取子表的行数据时居然获取不到,郁闷了很久.然后在网上找到方法(出处在这里:https://q.cnblogs.com/q/83412 ...
- python3.6 连接mysql数据库问题
最近有个项目欲安装MySQL-python/1.2.5一直失败. 环境: win7 python3.6.2 报错信息如下: Creating library build\temp.win32-3.6\ ...