Sqoop-1.4.6的安裝和配置

準備工作

  • 1.搭建好的hadoop分佈式系統
  • 2.mysql-connector-java-5.1.43-bin.jar和sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz安裝包

安裝

解壓sqoop安裝包實現sqoop的安裝

#tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/hadoop   //解壓實現安裝
#cd /usr/local/hadoop   //進入sqoop的安裝目錄
#mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz sqoop-1.4.6   //重命名sqoop

配置

  • 1.配置sqoop的環境變量
#vim /etc/profile

添加如下記錄:

SQOOP_HOME=/usr/local/hadoop/sqoop-1.4.6
export PATH=$SQOOP_HOME/bin:$PATH

使配置文件生效

#source /etc/profile
  • 2.複製mysql-connector-java-5.1.43-bin.jar到sqoop/lib目錄下
#cp mysql-connector-java-5.1.43-bin.jar /usr/local/hadoop/sqoop-1.4.6/lib
  • 3.修改配置文件sqoop-env.sh
#vim /usr/local/hadoop/sqoop-1.4.6/conf/sqoop-env.sh

將配置文件做如下改變:

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/hadoop/hadoop-2.7.3

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.7.3

#set the path to where bin/hbase is available
#export HBASE_HOME=

#Set the path to where bin/hive is available
#export HIVE_HOME=

#Set the path for where zookeper config dir is
#export ZOOCFGDIR=
  • 4.修改文件
#vim /usr/local/hadoop/sqoop-1.4.6/bin/configure-sqoop

註釋掉如下內容:

## Moved to be a runtime check in sqoop.
#if [ ! -d "${HBASE_HOME}" ]; then
#  echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."
#  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
#fi
#
## Moved to be a runtime check in sqoop.
#if [ ! -d "${HCAT_HOME}" ]; then
#  echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
#  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi
#
#if [ ! -d "${ACCUMULO_HOME}" ]; then
#  echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
#  echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
#fi
#if [ ! -d "${ZOOKEEPER_HOME}" ]; then
#  echo "Warning: $ZOOKEEPER_HOME does not exist! Accumulo imports will fail."
#  echo 'Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.'
#fi

選擇註釋掉這些內容的原因:在執行sqoop語句的時候常常有幾個warning警告,這些警告就是註釋掉的部分引起的。除非你準備使用HCatalog,Accumulo等hadoop上的組件,就可以不註釋。

查看幫助

[root@Master ~]# sqoop help
17/08/22 06:23:52 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
usage: 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 information

See 'sqoop help COMMAND' for information on a specific command.

import主要參數

--connect <jdbc-uri>   //jdbc連接地址
--connection-manager <class-name>   //連接管理者
--driver <class-name>   //驅動類
--hadoop-mapred-home <dir>   //$HADOOP_MAPRED_HOME
--help   //help信息
--password <password>   //密碼
--username <username>   //賬號
--verbose   //打印信息
--connection-param-file <filename>   //可選參數
-P   //從命令行輸入密碼

export主要參數

--direct   //快速導入
--export-dir <dir>   //HDFS導出數據的目錄
--table <table-name>   //導出哪個表
--call <stored-proc-name>   //存儲過程
--update-key <col-name>   //通過哪個字段來判斷更新
--update-mode <mode>   //插入模式,默認是隻更新,可以設置爲allowinsert.
--input-null-string <null-string>   //字符類型null處理
--input-null-non-string <null-string>   //非字符類型null處理
--staging-table <staging-table-name>   //臨時表
--clear-staging-table   //清空臨時表
--batch   //批量模式
-m,--num-mappers <n>   //都少個map線程

轉義字符相關參數

--enclosed-by <char>   //設置字段結束符號
--escaped-by <char>   //用哪個字符來轉義
--fields-terminated-by <char>   //字段之間的分隔符
--lines-terminated-by <char>   //行分隔符
--mysql-delimiters   //使用mysql的默認分隔符: , lines: \n escaped-by: \ optionally-enclosed-by: '
--optionally-enclosed-by <char>   //複製結束符

常用命令

顯示mysq中的數據庫

#sqoop list-databases --connect jdbc:mysql://123.207.101.174:3306/ --username 用戶名 --password 密碼

顯示某mysql數據庫中的表

#sqoop list-tables --connect jdbc:mysql://123.207.101.174:3306/數據庫名 --username 用戶名 --password 密碼

將mysql數據庫中的數據導入HDFS中

#sqoop import --connect jdbc:mysql://123.207.101.174:3306/數據庫名 --username 用戶名 --password 密碼
--table msg --fields-terminated-by '\t' -m 1

將mysql數據庫中的數據導入hive中

#sqoop import --connect jdbc:mysql://123.207.101.174:3306/數據庫名 --username 用戶名 --password 密碼
--table msg --hive-import --fields-terminated-by '\t' -m 1

注:將mysql數據庫中的數據導入hive中實際上內部執行了三個步驟:
1.將數據導入HDFS中
2.在hive中創建與mysql中同名的表
3.將HDFS中的數據傳入hive表中同時刪除HDFS上的數據

將HDFS中的數據導出到mysql數據庫中

#sqoop export --connect jdbc:mysql://123.207.101.174:3306/數據庫名 --username 用戶名 --password 密碼
--table 表名 --export-dir /user/root/msg/part-m-00000 --input-fields-terminated-by '\t'

注:導入之前需要先在mysql數據庫中創建和被導入的表表結構一樣的表

將hive中的數據導入到mysql數據庫中

#sqoop export --connect jdbc:mysql://123.207.101.174:3306/數據庫名 --username 用戶名 --password 密碼
--table 表名 --export-dir /user/hive/warehouse/msg/part-m-00000 --input-fields-terminated-by '\t'

注:導入之前需要先在mysql數據庫中創建和被導入的表表結構一樣的表

將關係型數據庫的表結構複製到hive中

#sqoop create-hive-table --connect jdbc:mysql://123.207.101.174:3306/數據庫名 --username 用戶名 --password 密碼
--table 表名 --hive-table hive表名 --fields-terminated-by "\0001"  --lines-terminated-by "\n";

Over

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章