尚硅谷大数据技术之Sqoop第5章 Sqoop一些常用命令及参数

5.2.11 命令&参数:job

用来生成一个sqoop任务,生成后不会立即执行,需要手动执行。

命令:

如:

$ bin/sqoop job \

 --create myjob -- import-all-tables \

 --connect jdbc:mysql://hadoop102:3306/company \

 --username root \

 --password 000000

$ bin/sqoop job \

--list

$ bin/sqoop job \

--exec myjob

尖叫提示:注意import-all-tables和它左边的--之间有一个空格

尖叫提示:如果需要连接metastore,则--meta-connect jdbc:hsqldb:hsql://linux01:16000/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://hadoop102:3306/ \

--username root \

--password 000000

 

参数:与公用参数一样

5.2.13 命令&参数:list-tables

命令:

如:

$ bin/sqoop list-tables \

--connect jdbc:mysql://hadoop102:3306/company \

--username root \

--password 000000

参数:与公用参数一样

5.2.14 命令&参数:merge

将HDFS中不同目录下面的数据合并在一起并放入指定目录中

数据环境:

new_staff

1       AAA     male

2       BBB     male

3       CCC     male

4       DDD     male

old_staff

1       AAA     female

2       CCC     female

3       BBB     female

6       DDD     female

尖叫提示:上边数据的列之间的分隔符应该为\t,行与行之间的分割符为\n,如果直接复制,请检查之。

命令:

如:

创建JavaBean:

$ bin/sqoop codegen \

--connect jdbc:mysql://hadoop102:3306/company \

--username root \

--password 000000 \

--table staff \

--bindir /home/admin/Desktop/staff \

--class-name Staff \

--fields-terminated-by "\t"

 

开始合并:

$ bin/sqoop merge \

--new-data /test/new/ \

--onto /test/old/ \

--target-dir /test/merged \

--jar-file /home/admin/Desktop/staff/Staff.jar \

--class-name Staff \

--merge-key id

结果:

1 AAA MALE

2 BBB MALE

3 CCC MALE

4 DDD MALE

6 DDD FEMALE

 

参数:

序号

参数

说明

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里存放的目录