sqoop 常用命令整理(二)

接上一篇!

26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator。

它有三个接口
Validator.
Property:         validator
Description:      Driver for validation,
                  must implement org.apache.sqoop.validation.Validator
Supported values: The value has to be a fully qualified class name.
Default value:    org.apache.sqoop.validation.RowCountValidator

Validation Threshold
Property:         validation-threshold
Description:      Drives the decision based on the validation meeting the
                  threshold or not. Must implement
                  org.apache.sqoop.validation.ValidationThreshold
Supported values: The value has to be a fully qualified class name.
Default value:    org.apache.sqoop.validation.AbsoluteValidationThreshold

Validation Failure Handler
Property:         validation-failurehandler
Description:      Responsible for handling failures, must implement
                  org.apache.sqoop.validation.ValidationFailureHandler
Supported values: The value has to be a fully qualified class name.
Default value:    org.apache.sqoop.validation.LogOnFailureHandler

27.validate例子

$ sqoop import --connect jdbc:mysql://db.foo.com/corp  \
    --table EMPLOYEES --validate

$ sqoop export --connect jdbc:mysql://db.example.com/foo --table bar  \
    --export-dir /results/bar_data --validate

$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
    --validate --validator org.apache.sqoop.validation.RowCountValidator \
    --validation-threshold \
          org.apache.sqoop.validation.AbsoluteValidationThreshold \
    --validation-failurehandler \
          org.apache.sqoop.validation.LogOnFailureHandler

28.sqoop job 保存常用的作业,以便下次快速调用

  --create <job-id>   创建一个新的job.

  --delete <job-id>   删除job

  --exec <job-id>    执行job

  --show <job-id>    显示job的参数

  --list          列出所有的job

29.例子

#创建job
$ sqoop job --create myjob -- import --connect jdbc:mysql://example.com/db \
    --table mytable
#列出所有job
$ sqoop job --list
#查看job
$ sqoop job --show myjob
 Job: myjob
 Tool: import
 Options:
 ----------------------------
 direct.import = false
 codegen.input.delimiters.record = 0
 hdfs.append.dir = false
 db.table = mytable
 ...
#执行job
$ sqoop job --exec myjob
10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation
...
#重写参数
$ sqoop job --exec myjob -- --username someuser -P
Enter password:
...

30.别的常用工具

sqoop-metastore

sqoop-merge

#合并两个目录
 $ sqoop merge --new-data newer --onto older --target-dir merged \
   --jar-file datatypes.jar --class-name Foo --merge-key id

sqoop-codegen

sqoop-create-hive-table

#在hive中创建一个名叫emps的和employees一样的表
 $ sqoop create-hive-table --connect jdbc:mysql://db.example.com/corp \
   --table employees --hive-table emps

sqoop-eval

#选择10行数据
$ sqoop eval --connect jdbc:mysql://db.example.com/corp \
    --query "SELECT * FROM employees LIMIT 10"
#往foo表插入一行
$ sqoop eval --connect jdbc:mysql://db.example.com/corp \
    -e "INSERT INTO foo VALUES(42, 'bar')"

sqoop-list-databases

$ sqoop list-databases --connect jdbc:mysql://database.example.com/
information_schema
employees

sqoop-list-tables

后面是附录,我把前面攒得一些东西放在这里了。

import的主要参数
--connect <jdbc-uri>    jdbc连接地址
--connection-manager <class-name>     连接管理者
--driver <class-name>     驱动类
--hadoop-mapred-home <dir>     $HADOOP_MAPRED_HOME
--help     help信息
-P     从命令行输入密码
--password <password>     密码
--username <username>     账号
--verbose    打印信息
--connection-param-file <filename>  可选参数

Argument     Description
--append     添加到hdfs中已经存在的dataset
--as-avrodatafile     导入数据作为avrodata
--as-sequencefile     导入数据位SequenceFiles
--as-textfile          默认导入数据为文本
--boundary-query <statement>     创建splits的边界
--columns <col,col,col…>     选择列
--direct             使用直接导入快速路径
--direct-split-size <n>     在快速模式下每n字节使用一个split
--fetch-size <n>     一次读入的数量
--inline-lob-limit <n>     最大数值 an inline LOB
-m,--num-mappers <n>     通过实行多少个map,默认是4个,某些数据库8 or 16性能不错
-e,--query <statement>     通过查询语句导入
--split-by <column-name>     创建split的列,默认是主键
--table <table-name>     要导入的表名
--target-dir <dir>     HDFS 目标路径
--warehouse-dir <dir>     HDFS parent for table destination
--where <where clause>     where条件
-z,--compress     Enable compression
--compression-codec <c>     压缩方式,默认是gzip
--null-string <null-string>    字符列null值
--null-non-string <null-string>     非字符列null值

export主要参数
--direct     快速导入
--export-dir <dir>     HDFS到处数据的目录
-m,--num-mappers <n>     都少个map线程
--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                                     批量模式

转义字符相关参数。
Argument     Description
--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>     复制结束符
时间: 2024-11-05 12:29:54

sqoop 常用命令整理(二)的相关文章

sqoop 常用命令整理(一)

这些内容是从sqoop的官网整理出来的,是1.4.3版本的Document,如果有错误,希望大家指正. 1.使用sqoop导入数据 sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST 2.账号密码 sqoop import --connect jdbc:mysql://database.example.com/employees \ --username aaron --password 123

Docker 常用命令整理并介绍_docker

什么是Docker? Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack 集群和其他的基础应用平台. Docker通常用于如下场景: web应用的自动化打包和发布: 自动化测试和持续集成.发布: 在服务型环境中部署和调整数据库或其他的后台应用: 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的P

Docker 常用命令整理及使用注意事项总结_docker

常用docker命令 对docker常用命名的详细解释,让你快速学会docker的使用! docker,轻量级虚拟机,也有人称之为应用容器 优点:1.部署速度快 2.测试服务与部署可保持完全一致 常用命令 1.查看容器的root用户密码 docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1 因为Docker容器启动时的root用户的密码是随机分配的.所以,通过这种方式就可以得到redmine容器的root用户的密码了. 2.

Git 常用命令整理_linux shell

前言 这里就不介绍 git 了,表一看到命令行就怕怕,常用的命令也就这些,基本满足 99% 以上的项目需求,非常实用. 正文 一.常用 git 命令 1.1 git clone <url> [<directory>] 从远程库 clone 代码到本地,directory 用于指定一个新目录名 1.2 git status 检查本地状态,可以查看当前所在分支.新增或被修改的文件 1.3 git checkout <file> 还原某文件所作的修改,也可以 "gi

Git常用命令整理

0.说明         整理了很常用的Git命令或者说是使用Git的一个常用流程,教程可以看Pro Git,很不错.         环境:Ubuntu 15.10 1.初始设置 设置姓名和邮箱地址 1 2 git config --global user.name "xpleaf" git config --global user.email "xpleaf@163.com" 提高命令输出的可读性 1 git config --global color.ui a

linux系统下VI常用命令整理

Vi共分三种模式,分别是"一般模式"."编辑模式"与"命令行命令模式". l         一般模式:vi处理文件时,一进入该文件就是一般模式.在这个模式中,可以使用"上下左右"键来移动光标,可以使用"删除字符"或"删除整行"来处理文件内容,也可以用"复制.粘贴"来处理文件数据. l         编辑模式:在一般模式中可以进行删除.复制.粘贴等操作,却无法进行编

LINUX常用命令整理

文件与目录操作命令 1.1文件内容查询命令 grep.fgrep.egrep  语法:grep[选项][查找模式][文件名1,文件名2,--] 选项: -E 每个模式作为一个扩展的正则表达式对待 -F 每个模式作为一组固定字符串对待,而不作为正则表达式 -i 比较时不区分大小写 -l 显示首次匹配匹配串所在的文件名并用换行符将其分开.当 在文件中多次出现匹配串时,不重复显示次文件名: -x 只显示整行严格匹配的行 1.2文件查找命令 find.locate 语法:find 起始目录 寻找条件 操

Linux文件操作常用命令整理

收集.整理日常系统管理或维护当中的,常用到的一些关于文件操作的命令或需求,后续会慢慢补充.完善!   查看.生成指定目录的目录树结构?   [root@DB-Server ~]#tree   #当前目录   [root@DB-Server ~]#tree  /home/oracle/kerry   查看当前目录或指定目录的大小? [root@DB-Server ~]#du -sh /u01 [root@DB-Server ~]#du -sh   查看各个文件或子文件夹大小 [root@DB-Se

Shell的18条常用命令整理

1. ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来. ls –l 该参数显示更详细的文件信息. ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数.但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说