使用Sqoop將MySQL資料匯入Hbase

想要使用MapReduce運算Hbase的資料,但若是原本資料在別種資料庫該怎麼辦呢,在龐大的Hadoop家族中Sqoop就是完成這一個任務,他有提供各種資料庫匯入至Hbase的功能。

因為我慣用MySQL所以還是拿MySQL當作範例,因為我是蠻久之前試玩的,所以是用舊的版本。他的安裝非常方便!!

安裝Sqoop

$ cd /opt
$ wget 'https://github.com/downloads/cloudera/sqoop/sqoop-1.2.0.tar.gz'

或是到官網下載

$ tar zxvf sqoop-1.2.0.tar.gz
$ mv sqoop-1.2.0 sqoop

下載mysql-connector-java-5.1.15-bin.jar並複製到/opt/sqoop/lib,然後就完成囉!! 接下來就測試看看是否能正常運作。

測試Sqoop

列出資料表

$ /opt/sqoop/bin/sqoop list-tables --connect jdbc:mysql://127.0.0.1/test -P --username test

匯入資料表

$ /opt/sqoop/bin/sqoop import --connect jdbc:mysql://127.0.0.1/test --username test --table table_name --hive-import

匯入資料表時下WHERE

$ /opt/sqoop/bin/sqoop import --connect jdbc:mysql://127.0.0.1/test --username test --table table_name --hive-import --query 'SELECT * FROM `table_name` where flow_no > 1 AND flow_no  但是我測試過後...無法轉換換行阿..看官網是說sqoop 1.3才有支援,但是hadoop 0.20 並不支援sqoop 1.3一整個無言。改天再測試。

使用Sqoop有出現錯誤也可以顯示

Demo

因為操作Sqoop是有點煩瑣的,所以我自己用PHP寫了Mysql匯入Hbase的簡單操作界面。

發生錯誤

無法從mysql匯入hbase

可以試試看刪除Hbase資料表

非單機模式下,必須寫成MySQL位址,不能用localhost

沒有資料庫的權限會發生下面的錯誤

Jul 18th, 2013 2:54:00pm

Last updated

Was this helpful?