mac安裝sqoop及簡單語法

安裝:
brew install sqoop

cd /usr/local/Cellar/sqoop/1.4.7/libexec/conf
cp sqoop-env-template.sh sqoop-env.sh

vim sqoop-env.sh

 export HADOOP_HOME="/usr/local/Cellar/hadoop/3.2.1_1/libexec"
export HBASE_HOME="/usr/local/Cellar/hbase/1.3.5"
export HIVE_HOME="/usr/local/Cellar/hive/3.1.2"
export ZOOCFGDIR="/usr/local/Cellar/zookeeper/3.5.7"


然後下載mysql 鏈接的jar包
查mysql版本命令:mysql -V
對應下載jar包網站:https://mvnrepository.com/artifact/mysql/mysql-connector-java
下載下來後複製jar包到sqoop/1.4.7/libexec/lib下

報錯Unknown system variable ‘query_cache_size’

這個主意是mysql版本導致的問題
然後下載mysql 鏈接的jar包
查mysql版本命令:mysql -V
對應下載jar包網站:https://mvnrepository.com/artifact/mysql/mysql-connector-java
下載下來後複製jar包到sqoop/1.4.7/libexec/lib下

ava.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

在apache 上下載commons-lang-2.6.jar包並上傳到lib下即可,下載地址:
http://mirrors.tuna.tsinghua.edu.cn/apache//commons/lang/binaries/commons-lang-2.6-bin.zip

hbase向mysql導入時候需要先在mysql創建好表才能正常導入

在這裏插入圖片描述

sqoop常見命令

參考:https://www.cnblogs.com/JBLi/p/10887140.html
https://www.bilibili.com/video/BV16e411x71o

1.列出mysql數據庫中的所有數據庫
sqoop list-databases -connect jdbc:mysql://192.168.1.10:3306 -username root -password root

2.列出數據庫sqoop中的所有數據表
sqoop list-tables -connect jdbc:mysql:///sqoop -username root -password root

 

3.通過Sqoop執行SQL語句
sqoop eval -connect jdbc:mysql:///sqoop -username root -password root -query "select * from employee where id=5"

可以快速地使用SQL語句對關係數據庫進行操作,這可以使得在使用import這種工具進行數據導入的時候,可以預先了解相關的SQL語句是否正確,並能將結果顯示在控制檯。

Sqoop與HDFS
1.將sqoop.employee表中的數據導入HDFS的/sqfs目錄下
sqoop import -connect jdbc:mysql://192.168.10.71:3306/t2 -username=root -password=root -table employee -m 1 -target-dir /output/1

mysql只認ip地址

疊加

追加模式
sqoop import -connect jdbc:mysql://192.168.10.71:3306/t2 -username root -password root -table employee -m 1 -target-dir /output/3 -incremental append -check-column id -last-value "5"

最後修改模式
sqoop import -connect jdbc:mysql://192.168.1.10:3306/sqoop -username root -password root -table employee -m 1 -target-dir /sqfs -incremental lastmodified -check-column lastmodified  -last-value '2016/1/5 18:00:05'


2.將HDFS上/sqfs目錄下的數據導入的sqoop.employee表中
sqoop export -connect "jdbc:mysql://192.168.11.51:3306/big1806?useUnicode=true&characterEncoding=utf-8" -username root -password root -table t2 -m 1 -export-dir /sqoop/mysql/t1

採用export插入數據的時候,如果數據已經存在了,插入會失敗,如果我們使用-update-key,它會認爲每個數據都是更新,比如我們使用下面這條語句:

sqoop export -table foo -update-key id -export-dir /path/to/data -connect …

UPDATE foo SET msg='this is a test', bar=42 WHERE id=0;

UPDATE foo SET msg='some more data', bar=100 WHERE id=1;

...

這樣即使找不到它也不會報錯

-update-mode allowinsert 如果存在就更新,不存在就插入
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章