执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步
生活随笔
收集整理的這篇文章主要介紹了
执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章回顧
理論
大數據框架原理簡介
大數據發展歷程及技術選型
實踐
搭建大數據運行環境之一
搭建大數據運行環境之二
本地MAC環境配置
CPU數和內存大小
- 查看CPU數
- 內存大小
在本地開了3個虛擬機centos服務器
虛擬機服務器配置
服務器1?192.168.84.128?4核4G服務器2?192.168.84.131?1核2G服務器3?192.168.84.132?1核2G因為服務器1上的按照的軟件比較多?所以這樣分配核數和內存?可以將大數據環境運行起來虛擬機軟件給一個虛擬機分配核數和內存的方式
通過Sqoop查看Mysql數據庫
/usr/local/sqoop/bin/sqoop?list-databases?--connect?jdbc:mysql://hadoop001:3306/?useSSL=false?--username?root?--password?123456在Hive中創建測試表
創建test表
CREATE?TABLE?IF?NOT?EXISTS?test?(id?int,uid?int,title?string,name?string,status?int,time?timestamp)COMMENT?'簡介'ROW?FORMAT?DELIMITEDFIELDS?TERMINATED?BY?"001"LINES?TERMINATED?BY?""STORED?AS?TEXTFILE;創建test_out表
CREATE?TABLE?IF?NOT?EXISTS?test_out?(name?string,?count?int,time?date)COMMENT?'簡介'ROW?FORMAT?DELIMITEDFIELDS?TERMINATED?BY?'001'LINES?TERMINATED?BY?''STORED?AS?TEXTFILE;hive刪除表
- 使用truncate僅可刪除內部表數據,不可刪除表結構
- 使用shell命令刪除外部表
- 使用 drop 可刪除整個表
查看hive表
- 查詢hive所有表
- 指定default數據庫
在Mysql中創建測試表
- 創建test
插入3條測試數據
INSERT?INTO?`test`.`test`(`id`,?`uid`,?`title`,?`name`,?`status`,?`time`)?VALUES?(1,?1,?'第一條數據',?'平凡人筆記',?1,?'2021-01-11?16:30:02');INSERT?INTO?`test`.`test`(`id`,?`uid`,?`title`,?`name`,?`status`,?`time`)?VALUES?(2,?2,?'第二條數據',?'孟凡霄',?2,?'2021-01-11?16:30:20');INSERT?INTO?`test`.`test`(`id`,?`uid`,?`title`,?`name`,?`status`,?`time`)?VALUES?(3,?3,?'第三條數據',?'平凡人',?3,?'2021-01-11?16:30:41');- 創建test_out
Mysql導入Hive
/usr/local/sqoop/bin/sqoop?import?--driver?com.mysql.jdbc.Driver?--connect?jdbc:mysql://hadoop001:3306/test?useSSL=false?--username?root?--password?123456?--table?test?--fields-terminated-by?'001'?--lines-terminated-by?''?--delete-target-dir?--num-mappers?1?--hive-import?--hive-database?default?--hive-table?test?--direct雖然有報錯?ERROR?bonecp.BoneCP:?Unable?to?start/stop?JMXjava.security.AccessControlException:?access?denied?("javax.management.MBeanTrustPermission"?"register")但不影響導入結果- 查看hive表
增量數據定時導入
mysql test表增加一條測試數據
INSERT?INTO?`test`.`test`(`id`,?`uid`,?`title`,?`name`,?`status`,?`time`)?VALUES?(4,?4,?'第四條數據',?'筆記',?4,?'2021-01-11?16:50:00');- 刪除指定job
- 添加一個增量更新的job
- 執行job
- 查看數據已被更新
- 查看job
通常情況可以結合sqoop job和crontab等任務調度工具實現相關業務
Hive導入Hive
cd?/usr/local/hive/binhive#?統計后將結果數據加入另一個表INSERT?INTO?TABLE?test_out(name,count,time)?SELECT?name,count(1),to_date(time)?FROM?test?GROUP?BY?name,to_date(time);#?或者INSERT?OVERWRITE?TABLE?test_outSELECT?name,count(1),to_date(time)?FROM?test?GROUP?BY?name,to_date(time);查看統計結果
統計成功Hive導入Mysql
#?hive的default庫中的test_out表數據導出到mysql的test庫test_out表/usr/local/sqoop/bin/sqoop?export?--connect?"jdbc:mysql://hadoop001:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"?--username?root?--password?123456?--input-null-string?'N'?--input-null-non-string?'N'?--input-fields-terminated-by?''?--table?test_out?--hcatalog-database?default?--hcatalog-table?test_out?-m?1;導出成功可能遇到的問題及注意點
- hive訪問mysql數據庫權限問題
mysql需要授權訪問者
GRANT?ALL?PRIVILEGES?ON?*.*?TO?'root'@'192.168.84.128'?IDENTIFIED?BY?'123456'?WITH?GRANT?OPTION;flush?privileges;- 在namenode上執行
- 只有namenode才會有webui 50070端口
后記
接下來研究的方向:1、hive運行原理2、弄一筆數據走一下搭建好的大數據運行環境3、10億數據如何分庫分表存儲Mysql4、10億數據同步到hive5、flink數據如何求交總結
以上是生活随笔為你收集整理的执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows集线器端口上的电涌问题怎么
- 下一篇: 地址栏地址 获取_直播源获取工具,支持斗