利用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"
近期评论