中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySql與HBase之間數據的互導

發布時間:2021-09-16 14:12:02 來源:億速云 閱讀:589 作者:chen 欄目:云計算

這篇文章主要講解了“MySql與HBase之間數據的互導”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySql與HBase之間數據的互導”吧!

在進行下面的步驟之前,請確保你的hadoop,hbase,hive,mysql,sqoop已經安裝配置完好

此處我的配置如下:

hadoop-1.2.1

hbase-0.94.18

hive-0.12.0

mysql-5.5.37

sqoop-1.4.4

一.將mysql中的數據導入到hbase中,這一步相對來說是比較簡單的

1.在mysql中建立一個teacher表,插入5組數據,我這里沒有將表建立的太大,可以根據自身數據大小情況改變創建表的大小,表的結構如下圖所示:

MySql與HBase之間數據的互導

2.在進行下一步之前,一定要確認mysql的jdbc已經拷貝到sqoop的lib目錄下,此處我使用的是 mysql-connector-java-5.0.8-bin.jar,同時需要拷貝hbase目錄下的hbase-0.94.18.jar和hbase的lib目錄下的zookeeper-3.4.5.jar到sqoop的lib目錄下,以上jar包,只要是適合自己版本的就好。

3.轉到sqoop的目錄下,執行命令:

$bin/sqoop import --connect jdbc:mysql://slave03/sqoop --username sqoop --password sqoop --table teacher --hbase-table myteacherhbase  --column-family info --hbase-create-table

上述命令行的含義:

$bin/sqoop import --connect jdbc:mysql://slave03(自己的機器名,可以是自己機器的ip地址)/sqoop(mysql中的database) --username 用戶名 --password 密碼 --table teacher(mysql中的table名字) --hbase-table myteacherhbase(導入到hbase中表的名字)  --column-family info --hbase-create-table(使hbase自己創建表)

4.1執行上述命令之前hbase中表的狀況:

MySql與HBase之間數據的互導

4.2執行sqoop命令之后hbase里邊表的狀況:

MySql與HBase之間數據的互導

5.至此,mysql數據庫中的數據導入到hbase中成功。

二.將hbase中的數據導出到mysql數據庫中。

因為之前在網上查找過很多的信息,了解到hbase中的數據不能夠直接導出到mysql數據庫中,所以只能借助一個中介實現這個目的,我了解到有以下兩種方法可以實現這個功能:

(1)將hbase中的數據導出到HDFS平臺上,然后導入到mysql(此方法本人還沒有試,只是了解到網上有人說可以)

(2)將hbase中的數據導出到hive(中介),然后通過sqoop將hive中的數據導入到mysql數據庫中。

接下來,我介紹第二種方法:

  1. 因為之前將mysql中的teacher表導入到了hbase,我就直接用hbase中的這個myteacherhbase表進行以下操作。

  2. 在mysql中新建立一個myteacher表,用來接收hbase導出的數據。

    表結構如圖:

    MySql與HBase之間數據的互導

  3. 在hive中創建連接hbase的外部表:


  4. hive> create external table myteacher_external(key int,value string)
        > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
        > WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")
        > TBLPROPERTIES("hbase.table.name" = "myteacherhbase");

這里我直接在創建外部表的時候指定了primary key,將id設為primary key.如圖:

MySql與HBase之間數據的互導

可以查詢到hbase中的數據,創建連接hbase外部表成功。

5.    在hive中新建一個內部表,將hive的external外部表數據導入到內部表。

hive>create table myteacher_inner(id int,name string);

建好之后,通過以下命令,執行將hbase中的數據導出到hive中:

hive> insert overwrite table myteacher_inner select * from myteacher_external;

如下圖:

MySql與HBase之間數據的互導

相應的內部表中有了數據,說明hbase導出到hive中成功了。

6.    接下來,就是利用sqoop將hive中的數據導入到mysql中了,轉到sqoop目錄下,執行以下命令:

bin/sqoop export --connect jdbc:mysql://本機ip/sqoop --username sqoop --password sqoop  -m 1 --table myteacher --export-dir hdfs://slave03:9000/home/hadoop/hive/warehouse/myteacher_inner --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\\01" --input-lines-terminated-by "\\n"

說明:ip地址之后的sqoop是mysql的database,之后依次是用戶名,密碼,m 1 是進行一次map,table myteacher是之前建立的接收hbase數據的空表,后邊的--export-dir是本機的hive之中表的HDFS地址。至于這地址之后的,是處理防止導入到mysql之中時,出現NULL的現象,導致原因是因為hive里存儲的數據和數據之間的間隔與mysql中存儲的數據和數據間隔不一致。所以需要處理一下。使mysql可以識別。

MySql與HBase之間數據的互導

sqoop執行命令成功。

7.    在mysql查看myteacher中的數據。

MySql與HBase之間數據的互導

查詢成功。導入成功,操作完成啦!

感謝各位的閱讀,以上就是“MySql與HBase之間數據的互導”的內容了,經過本文的學習后,相信大家對MySql與HBase之間數據的互導這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

军事| 保定市| 东台市| 墨玉县| 扬中市| 巫山县| 达孜县| 宜州市| 舞阳县| 安仁县| 奉化市| 贡嘎县| 绥棱县| 吐鲁番市| 揭阳市| 灵山县| 阿克陶县| 崇州市| 迭部县| 池州市| 都兰县| 东辽县| 茂名市| 鄂托克旗| 株洲县| 曲水县| 元氏县| 夏邑县| 老河口市| 砚山县| 河曲县| 江源县| 高邮市| 花莲县| 常宁市| 祁门县| 轮台县| 剑河县| 永定县| 洱源县| 缙云县|