本期與大家分享的是,小北精心整理的大數據學習筆記,數據采集工具Sqoop 的詳細介紹,希望對大家能有幫助,喜歡就給點鼓勵吧,記得三連哦!歡迎各位大佬評論區指教討論!
???制作不易,各位大佬們給點鼓勵!
???點贊? ? 收藏? ? 關注?
???歡迎各位大佬指教,一鍵三連走起!
????????在阿帕奇閣樓(The Apache Attic)中,Sqoop是這樣介紹的:(Apache Sqoop mission was the creation and maintenance of software related to Bulk Data Transfer for Apache Hadoop and Structured Datastores.) Apache Sqoop 的任務是創建和維護與 Apache Hadoop 和結構化數據存儲的批量數據傳輸相關的軟件。我們可以理解為:Sqoop是將關系數據庫(oracle、mysql、postgresql等)數據與hadoop數據進行轉換的工具、
Sqoop官網:http://sqoop.apache.org/
Sqoop的版本:
(兩個版本完全不兼容,sqoop1使用最多)
sqoop1:1.4.x
sqoop2:1.99.x
與Sqoop同類的產品有 :DataX:阿里頂級數據交換工具
????????如下圖,我們可以看出,Sqoop架構是非常簡單的,Sqoop是hadoop生態系統架構中最簡單的框架。Sqoop1.4x版本由client端直接接入hadoop,任務通過解析生成對應的maprecue執行。
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/soft/
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop-1.4.6
# 切換到sqoop配置文件目錄cd /usr/local/soft/sqoop-1.4.6/conf# 復制配置文件并重命名cp sqoop-env-template.sh sqoop-env.sh# vim sqoop-env.sh 編輯配置文件,并加入以下內容export HADOOP_COMMON_HOME=/usr/local/soft/hadoop/hadoop-2.7.6export HADOOP_MAPRED_HOME=/usr/local/soft/hadoop/hadoop-2.7.6/share/hadoop/mapreduceexport HBASE_HOME=/usr/local/soft/hbase-1.4.6export HIVE_HOME=/usr/local/soft/hive-1.2.1export ZOOCFGDIR=/usr/local/soft/zookeeper/zookeeper-3.4.6/confexport ZOOKEEPER_HOME=/usr/local/soft/zookeeper/zookeeper-3.4.6# 切換到bin目錄cd /usr/local/soft/sqoop-1.4.6/bin# vim configure-sqoop 修改配置文件,注釋掉沒用的內容(也就是為了去掉警告信息)
vim /etc/profile# 將sqoop的目錄加入環境變量export SQOOP_HOME=/usr/local/soft/sqoop-1.4.6export PATH=$SQOOP_HOME/bin
# 添加MySQL連接驅動到$SQOOP_HOME/lib#這里是從HIVE中復制MySQL連接驅動到$SQOOP_HOME/libcp /usr/local/soft/hive-1.2.1/lib/mysql-connector-java-5.1.49.jar /usr/local/soft/sqoop-1.4.6/lib/
# 打印sqoop版本sqoop version
# 測試MySQL連通性sqoop list-databases -connect jdbc:mysql://master:3306?useSSL=false -username root -password 123456
#登錄mysql -u root -p123456;#創建create database student;#切換use student
source /root/student.sql;source /root/score.sql;
mysql -u root -p123456 student</root/student.sqlmysql -u root -p123456 student</root/score.sql
mysqldump -u root -p123456 數據庫名>任意一個文件名.sql
import--connectjdbc:mysql://master:3306/student?useSSL=false--usernameroot--password123456--tablestudent--m2--split-byage--target-dir/sqoop/data/student1--fields-terminated-by","
sqoop --options-file MySQLToHDFS.conf
1、–m 表示指定生成的Map任務個數,注意,個數不是越多越好,因為MySQL Server的承載能力有限
2、當指定的Map任務個數大于1時,那么就需要結合
--split-by
參數,用于指定分割鍵,以用來確定每個map任務應該到底讀取哪一部分的數據,最好要指定數值型的列,最好指定列為主鍵(或者是分布均勻的列,這樣可以避免每個map任務處理的數據量差別過大)
3、若指定的分割鍵數據分布不均勻,那么可能會導致數據傾斜問題
4、分割的鍵最好指定為數值型的列,而且字段的類型為int、bigint這樣的數值型
5、編寫腳本的時候,注意事項:例如:
--username
參數,參數值不能和參數名同一行
--username root // 錯誤的// 應該分成兩行--usernameroot
6、當運行的時候報錯InterruptedException,不用擔心,這是hadoop2.7.6自帶的問題,忽略它就行
7、Sqoop讀取mysql數據實際用的是JDBC的方式,當數據量大的時候,效率不是很高
8、Sqoop底層是通過MapReduce完成數據導入導出的,并且只需要Map任務而不需要Reduce任務
9、每個Map任務會都生成一個文件
先會將MySQL的數據導出來并在HDFS上找個目錄臨時存放,( 默認為:/user/用戶名/ ),然后再將數據加載到Hive中,加載完成后,會將臨時存放的目錄刪除
import --connectjdbc:mysql://master:3306/student?useSSL=false--usernameroot--password123456--tablescore--fields-terminated-by"/t"--lines-terminated-by "/n"--m3--split-bystudent_id--hive-import--hive-overwrite--create-hive-table--hive-databasetestsqoop--hive-tablescore--delete-target-dir
hive> create database testsqoop;
sqoop --options-file MySQLToHIVE.conf
加上這個參數,可以在導出MySQL數據的時候,使用MySQL提供的導出工具mysqldump,可以加快導出速度,提高效率
需要將master上的/usr/bin/mysqldump分發至 node1、node2的/usr/bin目錄下
scp /usr/bin/mysqldump node1:/usr/bin/scp /usr/bin/mysqldump node2:/usr/bin/
import --connect jdbc:mysql://master:3306/student --username root --password 123456 --fields-terminated-by "/t" --lines-terminated-by "/n" --m 2 --split-by student_id --e "select * from score where student_id=1500100011 and $CONDITIONS" --target-dir /testQ --hive-import --hive-overwrite --create-hive-table --hive-database testsqoop --hive-table score2
import --connect jdbc:mysql://master:3306/student?useSSL=false--username root --password 123456--table student--hbase-table student--hbase-create-table--hbase-row-key id --m 1--column-family cf1
create "student","cf1"
sqoop --options-file MySQLToHBase.conf
export--connectjdbc:mysql://master:3306/student?useUnicode=true&characterEncoding=UTF-8--usernameroot--password123456--tablestudent-m1--columnsid,name,age,gender,clazz--export-dir/sqoop/data/student1/--fields-terminated-by ","
sqoop --options-file HDFSToMySQL.conf
sqoop help21/04/26 15:50:36 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6usage: sqoop COMMAND [ARGS]Available commands: codegen Generate code to interact with database records create-hive-table Import a table definition into Hive eval Evaluate a SQL statement and display the results export Export an HDFS directory to a database table help List available commands import Import a table from a database to HDFS import-all-tables Import tables from a database to HDFS import-mainframe Import datasets from a mainframe server to HDFS job Work with saved jobs list-databases List available databases on a server list-tables List available tables in a database merge Merge results of incremental imports metastore Run a standalone Sqoop metastore version Display version informationSee "sqoop help COMMAND" for information on a specific command.
# 查看import的詳細幫助sqoop import --help
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121949.html
摘要:大快的大數據通用計算平臺,已經集成相同版本號的開發框架的全部組件。,更是集成了大快的大數據一體化開發框架開發框架提供了大數據搜索自然語言處理和人工智能開發中常用的二十多個類,通過總計一百余種方法,實現了倍以上的開發效率的提升。 什么是大數據?進入本世紀以來,尤其是2010年之后,隨著互聯網特別是移動互聯網的發展,數據的增長呈爆炸趨勢,已經很難估計全世界的電子設備中存儲的數據到底有多少,...
摘要:如果我們可以克服一些數據遷移的挑戰,將一個數據倉庫以及其數據分析工具從數據中心中的專用服務器轉移到基于云的文件系統和數據庫就可以解決這個問題。數據遷移工具輔助向云端遷移從數據庫抽取數據很容易,從數據庫中有效挖掘大容量數據確是一項挑戰。 云計算和數據倉庫是合理的一對。云存儲可以按需擴展,云可以將大量服務器貢獻于某一具體任務。數據倉庫通用功能是本地數據分析工具,受到計算和存儲資源的限制,同時也受...
摘要:如果我們可以克服一些數據遷移的挑戰,將一個數據倉庫以及其數據分析工具從數據中心中的專用服務器轉移到基于云的文件系統和數據庫就可以解決這個問題。數據遷移工具輔助向云端遷移從數據庫抽取數據很容易,從數據庫中有效挖掘大容量數據確是一項挑戰。 云計算和數據倉庫是合理的一對。云存儲可以按需擴展,云可以將大量服務器貢獻于某一具體任務。數據倉庫通用功能是本地數據分析工具,受到計算和存儲 資源的限制,同時也...
閱讀 2381·2021-10-09 09:41
閱讀 3172·2021-09-26 09:46
閱讀 835·2021-09-03 10:34
閱讀 3150·2021-08-11 11:22
閱讀 3364·2019-08-30 14:12
閱讀 710·2019-08-26 11:34
閱讀 3343·2019-08-26 11:00
閱讀 1749·2019-08-26 10:26