sqoop把mysql数据导入hbase-完整记录
環(huán)境:
| 軟件 | 版本 | 備注 |
| Ubuntu | 19.10 | ? |
| sqoop | 1.4.7 | ? |
| mysql | 8.0.20-0ubuntu0.19.10.1 (Ubuntu) | ? |
| hbase | 2.2.4 | 必須啟動 |
| hadoop | 3.1.2 | 必須啟動 |
| hive | 3.0.0 | 之所以和hive有關(guān)系是因為需要在.bashrc中設(shè)置HCAT_HOME |
| accumulo | 2.0.0 | 需要配合sqoop在.bashrc中設(shè)置ACCUMULO_HOME |
?
數(shù)據(jù)導(dǎo)入目標(biāo):
mysql數(shù)據(jù)------------->Hbase
##############################################################################
準(zhǔn)備MYSQL數(shù)據(jù)集:
mysql> create database sqoop_hbase;
mysql> use sqoop_hbase;
mysql> CREATE TABLE book(
? ? -> id INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,
? ? -> NAME VARCHAR(255) NOT NULL,
? ? -> price VARCHAR(255) NOT NULL);
插入數(shù)據(jù)集
mysql> INSERT INTO book(NAME, price) VALUES('Lie Sporting', '30'); ?
mysql> INSERT INTO book (NAME, price) VALUES('Pride & Prejudice', '70'); ?
mysql> INSERT INTO book (NAME, price) VALUES('Fall of Giants', '50');?
##############################################################################
需要.bashrc中設(shè)置好ACCUMULO_HOME和HCAT_HOME
############################下面是準(zhǔn)備遷移##################################################
終端輸入命令:
sqoop import --connect jdbc:mysql://Desktop:3306/sqoop_hbase \ --username appleyuchi \ --password appleyuchi \ --table book \ --columns "id,name,price" \ --column-family "info" \ --hbase-create-table \ --hbase-row-key "id" \ --hbase-table "hbase_book" \ --num-mappers 1 \ --split-by id##############################################################################
hbase shell
scan 'hbase_book'
最終結(jié)果如下:
?
#-----------------------------------------------附錄-報錯解決方案--------------------------------------------------------------------------------------
| 報錯 | $SQOOP/lib需要補充jar |
| java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver | mysql-connector-java-8.0.20.jar |
| Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.HBaseAdmin | hbase-client-1.2.0.jar |
| Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/generated/MasterProtos$MasterService$BlockingInterface | hbase-protocol-1.2.0.jar |
| java.lang.NoSuchMethodError: org.apache.hadoop.hbase.util.Hash.hash([BII)I | hbase-common-1.2.0.jar |
| java.lang.ClassNotFoundException: com.yammer.metrics.core.Gauge | metrics-core-3.2.6.jar |
| Caused by: java.lang.ClassNotFoundException: org.apache.htrace.Trace ? | htrace-core-3.1.0-incubating.jar |
上述表格雖然有參考[1],但是我還是故意讓報錯激活出來,以便于選擇真正能解決問題的,而不是瞎拷貝
[1]https://stackoverflow.com/questions/51755213/sqoop-import-from-mysql-into-hbase-java-lang-nosuchmethoderror-org-apache-hado
總結(jié)
以上是生活随笔為你收集整理的sqoop把mysql数据导入hbase-完整记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 散户是什么意思 散户的含义是什么
- 下一篇: xch是什么币种