存档

文章标签 ‘hbase’

利用sqoop从pg数据库导数据到hbase

2018年7月13日 没有评论

1 环境
源端:postgresql 9.6.6
目标端: CDH 5.14.2 内置的hbase

2 sqoop-list-tables 报 “Could not load db driver class: org.postgresql.Driver”
从报错上看是缺少jdbc的jar包,在os上做了一下find发现CDH已经内置了,配到环境变量上就可以了。
环境变量添加类似这样一条:

export HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/jars/postgresql-9.1-901.jdbc4.jar:$HADOOP_CLASSPATH

测试:

 ./sqoop-list-tables --connect jdbc:postgresql://10.10.20.2:5432/qiuyb --username postgres -P
Warning: /opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/07/13 17:35:53 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.14.2
Enter password: 
18/07/13 17:35:56 INFO manager.SqlManager: Using default fetchSize of 1000
t1

qiuyb库下只有一张表名字为:t1

3 开通网络权限的时侯需要把hadoop整个集群连接pg都要开通,因为sqoop实际要做MR

4 数据从pg到hbase导入操作
1) sqoop import时在hbase中新建表,并插入数据

sqoop import -D sqoop.hbase.add.row.key=true --connect  jdbc:postgresql://10.10.20.2:5432/base --username postgres --password xxxxxx --table tt --columns id --hbase-create-table --hbase-table tt --column-family cf --hbase-row-key id 

2)带条件的插入新数据

sqoop import -D sqoop.hbase.add.row.key=true --connect  jdbc:postgresql://10.10.20.2:5432/base --username postgres --password xxxxxx --table tt --columns id  --hbase-table tt --column-family cf --hbase-row-key id --where "id > 1"
分类: Hadoop 标签: , ,