用Sqoop进行MySQL和HDFS系统间的数据互导(5)

五、将MySQL表导入到HBase
 
虽然目前,sqoop没有将HBase直接导入mysql的办法,但将mysql直接导入HBase是可以的。需指定–hbase-table,用–hbase-create-table来自动在HBase中创建表。–column-family指定列族名。–hbase-row-key指定rowkey对应的mysql的键。
 [zhouhh@Hadoop48 ~]$ sqoop import –connect jdbc:mysql://Hadoop48/toplists –table test –hbase-table a –column-family name –hbase-row-key id –hbase-create-table –username ‘root’
 
检查hbase被导入的表:
 hbase(main):002:0> scan 'a'
ROW COLUMN+CELL
1 column=name:cdate, timestamp=1342601695952, value=2012-07-18
1 column=name:comment, timestamp=1342601695952, value=8g
1 column=name:name, timestamp=1342601695952, value=iphone
1 column=name:price, timestamp=1342601695952, value=3900.00
1 column=name:version, timestamp=1342601695952, value=1
2 column=name:cdate, timestamp=1342601695952, value=2012-07-16
2 column=name:comment, timestamp=1342601695952, value=16g
2 column=name:name, timestamp=1342601695952, value=ipad
2 column=name:price, timestamp=1342601695952, value=3200.00
2 column=name:version, timestamp=1342601695952, value=2
2 row(s) in 0.2370 seconds
 
关于导入的一致性:建议停止mysql表的写入再导入到HDFS或HIVE,否则,mapreduce可能会丢失新增的数据。
 关于效率:mysql直接模式(–direct)导入的方式效率高。但不支持大对象数据,类型为CLOB或BLOB的列。用JDBC效率较低,但有专用API可以支持CLOB及BLOB。
 
六、从HBase导出数据到Mysql
 
目前没有直接的导出命令。但有两个方法可以将HBase数据导出到mysql。
 
其一,将HBase导出成HDFS平面文件,再导出到mysql.
其二,将HBase数据导出到HIVE,再导出到mysql,参见后续文章《从HBase(Hive)将数据导出到MySQL

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8f7170b2780c0e7109619180698fd3d1.html