使用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?