CentOS7.5之Sqoop1.4.7的安裝使用


一 Sqoop簡介

       Apache Sqoop(TM) 於 2012 年 3 月孵化出來,現在是一個頂級的 Apache 項目。是一種旨在有效地在 Apache Hadoop 和諸如關系數據庫等結構化數據存儲之間傳輸大量數據的工具。最新的穩定版本是 1.4.7。Sqoop2 的最新版本是 1.99.7。請注意,1.99.7 1.4.7 不兼容,且沒有特征不完整,它並不打算用於生產部署。

二 Sqoop原理

     將導入或導出命令翻譯成 mapreduce 程序來實現。在翻譯出的 mapreduce 中主要是對 inputformat outputformat 進行定制。

三 Sqoop安裝

安裝 Sqoop 的前提是已經具備 Java Hadoop 的環境。

3.1 下載並解壓

1) 最新版下載地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/

用戶指南:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

2) 上傳安裝包sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz到虛擬機中,

如我的上傳目錄是:/opt/software

3) 解壓 sqoop 安裝包到指定目錄,如:

[admin@node21 software]$ tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/module/
[admin@node21 module]$ mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7

3.2 修改配置文件

Sqoop 的配置文件與大多數大數據框架類似,在 sqoop 根目錄下的 conf 目錄中。

1) 重命名配置文件

[admin@node21 conf]$ cp sqoop-env-template.sh sqoop-env.sh

在conf目錄下,有兩個文件sqoop-site.xml和sqoop-site-template.xml內容是完全一樣的,不必在意,我們只關心sqoop-site.xml即可。

1) 修改配置文件

sqoop-env.sh

export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.6
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.6
export HBASE_HOME=/opt/module/hbase-1.2.6
export HIVE_HOME=/opt/module/hive-2.3.3
export ZOOCFGDIR=/opt/module/zookeeper-3.4.12

3.3 拷貝JDBC驅動

[admin@node21 conf]$ cp /opt/software/mysql-connector-java-5.1.9.jar  /opt/module/sqoop-1.4.7/lib/

3.4 配置環境變量

export  SQOOP_HOME=/opt/module/sqoop-1.4.7
export  PATH=$PATH:$SQOOP_HOME/bin

source /etc/profile

3.4 驗證Sqoop

我們可以通過某一個 command 來驗證 sqoop 配置是否正確:

[admin@node21 sqoop-1.4.7]$ sqoop help
Warning: /opt/module/sqoop-1.4.7/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /opt/module/sqoop-1.4.7/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/06/03 23:27:27 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
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.

3.5 測試Sqoop是否能夠成功連接數據庫

$ bin/sqoop list-databases --connect jdbc:mysql://node21:3306/ --username root --password 123456
出現如下輸出:
information_schema
hive
mysql
performance_schema
sys

四 Sqoop的簡單使用案例

4.1 導入數據

Sqoop 中,“導入”概念指:從非大數據集群(RDBMS)向大數據集群(HDFS,HIVE,HBASE)中傳輸數據,叫做:導入,即使用 import 關鍵字。

4.1.1 RDBMS到HDFS

1) 確定 Mysql 服務開啟正常

2)  Mysql 中新建一張表並插入一些數據

$ mysql -uroot -p123456
mysql> create database company;
mysql> create table company.staff(id int(4) primary key not null auto_increment, name varchar(255), sex varchar(255));
mysql> insert into company.staff(name, sex) values('Thomas', 'Male');
mysql> insert into company.staff(name, sex) values('Catalina', 'FeMale');

1) 導入數據

1)全部導入

命令行方式:

$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--target-dir /sqoop/data \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

腳本方式:

在/opt/module/datas下創建一個sqoop1,txt(文件名自定義),內容如下

import --connect 'jdbc:mysql://node21:3306/company' --username root --password 123456 --table staff --target-dir /sqoop/data --num-mappers 1 --fields-terminated-by "\t"

然后在窗口執行命令 sqoop --options-file  /opt/module/datas/sqoop1.txt

2)查詢導入

$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--target-dir /sqoop/data \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from staff where id <=1 and $CONDITIONS;'

尖叫提示:must contain '$CONDITIONS' in WHERE clause.

尖叫提示:如果 query 后使用的是雙引號,則$CONDITIONS  前必須加轉移符,防止 shell 識別為自己的變量。

尖叫提示:--query 選項,不能同時與--table 選項使用

3)導入指定列

$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--target-dir /sqoop/data \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,sex \
--table staff

尖叫提示:columns 中如果涉及到多列,用逗號分隔,分隔時不要添加空格

4)使用 sqoop 關鍵字篩選查詢導入數據

$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--target-dir /sqoop/data \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table staff \
--where "id=1"

尖叫提示: Sqoop 中可以使用 sqoop import -D property.name=property.value 這樣的方式加

入執行任務的參數,多個參數用空格隔開。

4.1.2 RDBMS到Hive

$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table staff_hive

尖叫提示:該過程分為兩步,第一步將數據導入到 HDFS,第二步將導入到 HDFS 的數據遷移到 Hive 倉庫

尖叫提示:第一步默認的臨時目錄是/user/admin/表名

4.2 導出數據

Sqoop 中,“導出”概念指:從大數據集群(HDFS,HIVE,HBASE)向非大數據集群(RDBMS)中傳輸數據,叫做:導出,即使用 export 關鍵字。

4.2.1HIVE/HDFS RDBMS

$ bin/sqoop export \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff_hive \
--input-fields-terminated-by "\t"

尖叫提示:Mysql 中如果表不存在,不會自動創建

思考:數據是覆蓋還是追加

4.3 腳本打包

使用 opt 格式的文件打包 sqoop 命令,然后執行

1) 創建一個.opt 文件

$ mkdir opt
$ touch opt/job_HDFS2RDBMS.opt

2) 編寫 sqoop 腳本

$ vi opt/job_HDFS2RDBMS.opt
export
--connect jdbc:mysql://node21:3306/company
--username root
--password 123456
--table staff
--num-mappers 1
--export-dir
/user/hive/warehouse/staff_hive
--input-fields-terminated-by "\t"

3) 執行該腳本

$ bin/sqoop --options-file opt/job_HDFS2RDBMS.opt

五 Sqoop一些常用命令參數

5.1 常用命令列舉

這里給大家列出來了一部分 Sqoop 操作時的常用參數,以供參考,需要深入學習的可以參看對應類的源代碼。

序號

命令

說明

1

import

ImportTool

將數據導入到集群

2

export

ExportTool

將集群數據導出

3

codegen

CodeGenTool

獲取數據庫中某張表數據生成Java 並打包Jar

4

create-hive-table

CreateHiveTableTool

創建 Hive 表

5

eval

EvalSqlTool

查看 SQL 執行結果

6

import-all-tables

ImportAllTablesTool

導入某個數據庫下所有表到 HDFS 中

7

job

JobTool

用來生成一個 sqoop的任務,生成后,該任務並不執行,除非使用命令執行該任務。

8

list-databases

ListDatabasesTool

列出所有數據庫名

9

list-tables

ListTablesTool

列出某個數據庫下所有表

10

merge

MergeTool

將 HDFS 中不同目錄下面的數據合在一起,並存放在指定的目錄中

11

metastore

MetastoreTool

記 錄  sqoop job 的 元數據信息,如果不啟動 metastore 實例,則默認的元數據存儲目錄為:~/.sqoop,如果要更改存儲目錄,可以 在 配 置 文 件sqoop-site.xml 中進行更改。

12

help

HelpTool

打印 sqoop 幫助信息

13

version

VersionTool

打印 sqoop 版本信息

5.2 命令&參數詳解

剛才列舉了一些 Sqoop 的常用命令,對於不同的命令,有不同的參數,讓我們來一一列舉說明。

首先來我們來介紹一下公用的參數,所謂公用參數,就是大多數命令都支持的參數。

5.2.1 公用參數:數據庫連接

序號

參數

說明

1

--connect

連接關系型數據庫的 URL

2

--connection-manager

指定要使用的連接管理類

3

--driver

JDBC driver class

4

--help

打印幫助信息

5

--password

連接數據庫的密碼

6

--username

連接數據庫的用戶名

7

--verbose

在控制台打印出詳細信息

5.2.2 公用參數:import

序號

參數

說明

1

--enclosed-by <char>

給字段值前后加上指定的字

2

--escaped-by <char>

對字段中的雙引號加轉義符

3

--fields-terminated-by <char>

設定每個字段是以什么符號

作為結束,默認為逗號

4

--lines-terminated-by <char>

設定每行記錄之間的分隔符,

默認是\n

5

--mysql-delimiters

 

Mysql 默認的分隔符設置,字

段之間以逗號分隔,行之間以

\n 分隔,默認轉義符是\,字

段值以單引號包裹。

6

--optionally-enclosed-by

<char>

給帶有雙引號或單引號的字

段值前后加上指定字符。

5.2.3 公用參數:export

序號

參數

說明

1

--input-enclosed-by <char>

對字段值前后加上指定字符

2

--input-escaped-by <char>

對含有轉移符的字段做轉義處理

3

--input-fields-terminated-by

<char>

字段之間的分隔符

4

--input-lines-terminated-by

<char>

行之間的分隔符

5

--input-optionally-enclosed-by

<char>

給帶有雙引號或單引號的字

段前后加上指定字符

5.2.4 公用參數:hive

序號

參數

說明

1

--hive-delims-replacement

 

<arg>

用自定義的字符串替換掉數

據中的\r\n \013 \010 等字符

2

--hive-drop-import-delims

在導入數據到 hive 時,去掉

數據中的\r\n\013\010 這樣的字符

3

--map-column-hive <map>

生成 hive 表時,可以更改生

 

 

成字段的數據類型

4

--hive-partition-key

 

創建分區,后面直接跟分區

名,分區字段的默認類型為

string

5

--hive-partition-value <v>

導入數據時,指定某個分區的

6

--hive-home <dir>

 

hive 的安裝目錄,可以通過該

參數覆蓋之前默認配置的目

7

--hive-import

將數據從關系數據庫中導入

hive 表中

8

--hive-overwrite

覆蓋掉在 hive 表中已經存在

的數據

9

--create-hive-table

默認是 false,即,如果目標

表已經存在了,那么創建任務

失敗。

10

--hive-table

后面接要創建的 hive ,默認

使用 MySQL 的表名

11

--table

指定關系數據庫的表名


   公用參數介紹完之后,我們來按照命令介紹命令對應的特有參數。

5.2.5 命令&參數:import

 將關系型數據庫中的數據導入到 HDFS(包括 HiveHBase)中,如果導入的是 Hive,那么當 Hive 中沒有對應表時,則自動創建。

1)  命令:

如:導入數據到 hive

$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--hive-import

如:增量導入數據到 hive 中,mode=append

append 導入:
$ bin/sqoop import \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--num-mappers 1 \
--fields-terminated-by "\t" \
--target-dir /user/hive/warehouse/staff_hive \
--check-column id \
--incremental append \
--last-value 3

尖叫提示:append 不能與--hive-等參數同時使用(Append mode for hive imports is not yet

supported. Please remove the parameter --append-mode 如:增量導入數據到 hdfs 中,

先在 mysql 中建表並插入幾條數據:
mysql> create table company.staff_timestamp(id int(4), name varchar(255), sex varchar(255),
last_modified timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP);
mysql> insert into company.staff_timestamp (id, name, sex) values(1, 'AAA', 'female'); 
mysql> insert into company.staff_timestamp (id, name, sex) values(2, 'BBB', 'female'); 先導入一部分數據: $ bin/sqoop import \ --connect jdbc:mysql://node21:3306/company \ --username root \ --password 123456 \ --table staff_timestamp \ --delete-target-dir \ --m 1 再增量導入一部分數據: mysql> insert into company.staff_timestamp (id, name, sex) values(3, 'CCC', 'female'); $ bin/sqoop import \ --connect jdbc:mysql://node21:3306/company \ --username root \ --password 123456 \ --table staff_timestamp \ --check-column last_modified \ --incremental lastmodified \ --last-value "2018-06-04 17:25:29" \ --m 1 \ --append

尖叫提示:使用 lastmodified 方式導入數據要指定增量數據是要--append(追加)還是要

--merge-key(合並)

尖叫提示:last-value 指定的值是會包含於增量導入的數據中

1) 參數:

序號

參數

說明

1

--append

將數據追加到 HDFS 中已經存在的 DataSet 中,如果使用該參數,sqoop 會把數據先導入到臨時文件目錄,再合並。

2

--as-avrodatafile

將數據導入到一個 Avro 數據文件中

3

--as-sequencefile

將數據導入到一個 sequence文件中

4

--as-textfile

將數據導入到一個普通文本文件中

5

--boundary-query <statement>

邊界查詢,導入的數據為該參數的值(一條 sql 語句)所執行的結果區間內的數據。

6

--columns <col1, col2, col3>

指定要導入的字段

7

--direct

直接導入模式,使用的是關系數據庫自帶的導入導出工具, 以便加快導入導出過程。

8

--direct-split-size

在使用上面 direct 直接導入的基礎上,對導入的流按字節分塊,即達到該閾值就產生一個新的文件

9

--inline-lob-limit

設定大對象數據類型的最大值

10

--m 或–num-mappers

啟動 N 個 map 來並行導入數據,默認 4 個。

11

--query 或--e <statement>

將查詢結果的數據導入,使用時必須伴隨參--target-dir,--hive-table,如果查詢中有where 條件,則條件后必須加上$CONDITIONS 關鍵字

12

--split-by <column-name>

按照某一列來切分表的工作單元,不能與--autoreset-to-one-mapper 連用(請參考官方文檔)

13

--table <table-name>

關系數據庫的表名

14

--target-dir <dir>

指定 HDFS 路徑

15

--warehouse-dir <dir>

與 14 參數不能同時使用,導入數據到 HDFS 時指定的目錄

16

--where

從關系數據庫導入數據時的查詢條件

17

--z 或--compress

允許壓縮

18

--compression-codec

指定 hadoop 壓縮編碼類,默認為 gzip(Use Hadoop codec default gzip)

19

--null-string <null-string>

string 類型的列如果 null,替換為指定字符串

20

--null-non-string <null-string>

非 string 類型的列如果 null,替換為指定字符串

21

--check-column <col>

作為增量導入判斷的列名

22

--incremental <mode>

mode:append 或 lastmodified

23

--last-value <value>

指定某一個值,用於標記增量導入的位置

5.2.6 命令&參數:export

HDFS(包括 Hive HBase)中將數據導出到關系型數據庫中。

1) 命令: 如:

$ bin/sqoop export \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--export-dir /sqoop/data \
--input-fields-terminated-by "\t" \
--num-mappers 1

2) 參數:

序號

參數

說明

1

--direct

利用數據庫自帶的導入導出工具,以便於提高效率

2

--export-dir <dir>

存放數據的 HDFS 的源目錄

3

-m 或--num-mappers <n>

啟動 N 個 map 來並行導入數據,默認 4 個

4

--table <table-name>

指定導出到哪個 RDBMS 中的表

5

--update-key <col-name>

對某一列的字段進行更新操作

6

--update-mode <mode>

updateonly allowinsert(默認)

7

--input-null-string <null-string>

請參考 import 該類似參數說明

8

--input-null-non-string

<null-string>

請參考 import 該類似參數說明

9

--staging-table

<staging-table-name>

創建一張臨時表,用於存放所有事務的結果,然后將所有事務結果一次性導入到目標表中,防止錯誤。

10

--clear-staging-table

如果第 9 個參數非空,則可以在導出操作執行前,清空臨時事務結果表

5.2.7 命令&參數:codegen

將關系型數據庫中的表映射為一個 Java 類,在該類中有各列對應的各個字段。如:

$ bin/sqoop codegen \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--bindir /home/admin/Desktop/staff \
--class-name Staff \
--fields-terminated-by "\t"

序號

參數

說明

1

--bindir <dir>

指定生成的 Java 文件、編譯成的 class 文件及將生成文件打包為 jar 的文件輸出路徑

2

--class-name <name>

設定生成的 Java 文件指定的名稱

3

--outdir <dir>

生成 Java 文件存放的路徑

4

--package-name <name>

包名,如 com.z,就會生成 com和 z 兩級目錄

5

--input-null-non-string

 

<null-str>

在生成的 Java 文件中,可以將 null 字符串或者不存在的字符串設置為想要設定的值

(例如空字符串)

6

--input-null-string <null-str>

將 null 字符串替換成想要替換的值(一般與 5 同時使用)

7

--map-column-java <arg>

數據庫字段在生成的 Java 文件中會映射成各種屬性,且默認的數據類型與數據庫類型保持對應關系。該參數可以改變默認類型,例如:

--map-column-java id=long,

 name=String

8

--null-non-string <null-str>

在生成 Java 文件時,可以將不存在或者 null 的字符串設置為其他值

9

--null-string <null-str>

在生成 Java 文件時,將 null 字符串設置為其他值(一般與8 同時使用)

10

--table <table-name>

對應關系數據庫中的表名,生成的 Java 文件中的各個屬性與該表的各個字段一一對應

5.2.8 命令&參數:create-hive-table

生成與關系數據庫表結構對應的 hive 表結構。命令:

如:

$ bin/sqoop create-hive-table \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--hive-table hive_staff

參數:

序號

參數

說明

1

--hive-home <dir>

Hive 的安裝目錄,可以通過該參數覆蓋掉默認的 Hive 目錄

2

--hive-overwrite

覆蓋掉在 Hive 表中已經存在的數據

3

--create-hive-table

默認是 false,如果目標表已經存在了,那么創建任務會失敗

4

--hive-table

后面接要創建的 hive 表

5

--table

指定關系數據庫的表名

5.2.9 命令&參數:eval

可以快速的使用 SQL 語句對關系型數據庫進行操作,經常用於在 import 數據之前,了解一下 SQL 語句是否正確,數據是否正常,並可以將結果顯示在控制台。

命令: 如:

$ bin/sqoop eval \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--query "SELECT * FROM staff"

參數:

序號

參數

說明

1

--query 或--e

后跟查詢的 SQL 語句

5.2.10 命令&參數:import-all-tables

可以將 RDBMS 中的所有表導入到 HDFS 中,每一個表都對應一個 HDFS 目錄命令:

如:

$ bin/sqoop import-all-tables \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--warehouse-dir /all_tables

參數:

序號

參數

說明

1

--as-avrodatafile

這些參數的含義均和 import

對應的含義一致

2

--as-sequencefile

3

--as-textfile

4

--direct

5

--direct-split-size <n>

6

--inline-lob-limit <n>

7

--m 或—num-mappers <n>

 

8

--warehouse-dir <dir>

9

-z 或--compress

10

--compression-codec

5.2.11 命令&參數:job

用來生成一個 sqoop 任務,生成后不會立即執行,需要手動執行。命令:

如:

$ bin/sqoop job \
--create myjob -- import-all-tables \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456
$ bin/sqoop job \
--list
$ bin/sqoop job \
--exec myjob

尖叫提示:注意 import-all-tables 和它左邊的--之間有一個空格

尖叫提示:如果需要連接 metastore,則--meta-connect jdbc:hsqldb:hsql://node21:16010/sqoop

參數:

序號

參數

說明

1

--create <job-id>

創建 job 參數

2

--delete <job-id>

刪除一個 job

3

--exec <job-id>

執行一個 job

4

--help

顯示 job 幫助

5

--list

顯示 job 列表

6

--meta-connect <jdbc-uri>

用來連接 metastore 服務

7

--show <job-id>

顯示一個 job 的信息

8

--verbose

打印命令運行時的詳細信息

尖叫提示:在執行一個 job 時,如果需要手動輸入數據庫密碼,可以做如下優化

<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true, allow saved passwords in the metastore.</description>
</property>

5.2.12 命令&參數:list-databases

命令: 如:

$ bin/sqoop list-databases 
--connect jdbc:mysql://node21:3306/ \
--username root \
--password 123456

參數:與公用參數一樣

5.2.13 命令&參數:list-tables

 命令: 如:

$ bin/sqoop list-tables \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456

5.2.14 命令&參數:merge

HDFS 中不同目錄下面的數據合並在一起並放入指定目錄中數據環境:

請檢查之。命令:如:

創建 JavaBean:
$ bin/sqoop codegen \
--connect jdbc:mysql://node21:3306/company \
--username root \
--password 123456 \
--table staff \
--bindir /home/admin/Desktop/staff \
--class-name Staff \
--fields-terminated-by "\t"

參數:

序號

參數

說明

1

--new-data <path>

HDFS 待合並的數據目錄,合並后在新的數據集中保留

2

--onto <path>

HDFS 合並后,重復的部分在新的數據集中被覆蓋

3

--merge-key <col>

合並鍵,一般是主鍵 ID

4

--jar-file <file>

合並時引入的 jar 包,該 jar包是通過 Codegen 工具生成的 jar 包

5

--class-name <class>

對應的表名或對象名, 該class 類是包含在 jar 包中的

6

--target-dir <path>

合並后的數據在 HDFS 里存放的目錄

5.2.15 命令&參數:metastore

記錄了 Sqoop job 的元數據信息,如果不啟動該服務,那么默認 job 元數據的存儲目錄為

~/.sqoop,可在 sqoop-site.xml 中修改。命令:

如:啟動 sqoop metastore 服務

$ bin/sqoop metastore

參數:

序號

參數

說明

1

--shutdown

關閉 metastore

六 故障解決

6.1 JDBC驅動包版本問題

當執行sqoop命令時,報錯如下

18/06/04 03:57:50 ERROR tool.ImportTool: Import failed: java.io.IOException: No columns to generate for ClassWriter

問題可能是mysql-connector-java的bug造成的,就試了一下,
原有的jar包是mysql-connector-java-5.1.9.jar,替換成mysql-connector-java-5.1.32-bin.jar,可以使用了。

6.2 去除警告消息 

Warning: /opt/module/sqoop-1.4.7/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /opt/module/sqoop-1.4.7/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
18/06/04 07:21:33 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM