文章目录

  • 1. 脚本打包
  • 2. Sqoop一些常用命令及参数
  • 2.1 job命令


1. 脚本打包

使用opt格式的文件打包Sqoop命令,然后执行。

(1) 创建一个.opt文件

# 创建一个.opt文件
touch job_HDFS2RDBMS.opt

job_HDFS2RDBMS.opt文件内容如下:

# 以下命令是从stu中追加导入到MySQL的stu_hive表中
export
--connect
jdbc:mysql://topnpl200:3306/topdb_dev
--username
root
--password
TOPtop******
--table
stu_hive
--num-mappers
1
--export-dir
/user/hive/warehouse/during.db/stu
--input-fields-terminated-by
"\t"

(2) 执行该脚本

# 执行该脚本
sqoop --options-file job_HDFS2RDBMS.opt

注:

  • 每次运行一个Sqoop任务都会在/tmp/sqoop-root/compile/xxx下生成jar,class,java等文件。
  • 可能会停住,原因:资源占用;MySQL主键冲突。
    解决:
    1、jps看到有YardChild,MRAPPMaster,kill掉这些再跑。
    2、重启Hadoop集群。
    3、就先停掉Yarn,修改各个Yarn节点的配置,再启动。
    在yarn-site.xml中加入以下配置
<property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>20480</value>
</property>

<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>2048</value>
</property>

<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value>
</property>

4、清空/tmp下文件。
5、数据是追加。重复往MySQL的同一个表中导出数据,MySQL的表不能设置主键和自增。否则就会出现一直卡住的现象。

2. 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版本信息

2.1 job命令

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

sqoop job \
--create myjob1 -- import \
--connect jdbc:mysql://topnpl200:3306/topdb_dev \
--username root \
--password TOPtop123456 \
--table test_table \
--target-dir /during/sqoop_test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

报错:
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
java.lang.NullPointerException at org.json.JSONObject.(JSONObject.java:144)
解决:
这是因为sqoop缺少java-json.jar包.
下载java-json.jar包:http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm
把java-json.jar添加到sqoop/lib目录就可以了。

# 执行job
sqoop job --exec myjob1

# 查看所有job
sqoop job --list

# 删除job
sqoop job --delete myjob1