sqoop抽取数据到hbase上

jdbc:oracle:thin:@//192.168.3.94/xmhealthy 指的是数据库 jdbc连接的IP和数据库实例名
username cmmi --password cmmi 指的是数据库的用户名和密码
query " " 中间是oracle数据库查询语句

where 1 = 1 因为抽取语句中有and出现 而oracle查询语句 没有where 条件存在的话就要写上 where 1 = 1
数据库语句 中存在where条件 这个where 1 = 1 就不用加了

–hbase-table ihr:HealthExam_Reg 指的是要抽取到hbase中的表名
–hbase-row-key ID 指的是hbase中rowkey在oracle查询语句中的字段
–column-family p 指的是hbase表中的列族

注意在抽取数据到hbase中的时候要确定hbase表存在。并且列族要书写正确。

以下是sqoop抽取数据到hbase中的shell命令示范。
这个shell语句需要进入集群 然后在根目录进行操作。
进入集群后执行 cd ~
然后在把下面的shell命令粘贴上去 等待执行完毕 然后在执行ls会看到 一个 QueryResult.java的文件
然后执行 rm -rf QueryResult.java 给这个抽取日志删除

sqoop import --append --connect jdbc:oracle:thin:@//192.168.3.94/xmhealthy
–username cmmi --password cmmi --num-mappers 1
–query "
select
a.id_no||’;’||a.card_no||’;’||a.org_code||’;’||a.patient_id||’;’||a.health_exam_form_no as id,
a.LAST_UPDATE_DTIME,
a.ORG_CODE,
a.PATIENT_ID,
a.HEALTH_EXAM_FORM_NO,
a.START_DATE,
a.EXAM_END_DATE,
a.REPORT_TITLE,
a.NAME,
a.SEX_CODE,
a.SEX_NAME,
a.BIRTH_DATE,
a.AGE,
a.ADDRESS,
a.EMPLOYER_NAME,
a.ID_NO,
a.CARD_NO,
a.OCCUP_NAME,
a.MARRIAGE_NAME,
a.MARRIAGE_CODE,
a.EXAM_SUMMARY,
a.EXAM_CHIEF_DOCTOR,
a.EXAM_CHIEF_DOCTOR_CODE,
a.HEALTH_GUIDE,
a.MEMO,
a.CREATE_TIME
from HealthExam_Reg a
where 1 = 1
and $CONDITIONS "
–hbase-table ihr:HealthExam_Reg --hbase-row-key ID --column-family p --hbase-bulkload --verbose

然后进入hbase 查看数据是否存在

你可能感兴趣的:(hbase,sqoop)