天天看点

sqoop常用命令整理

常用命令整理

命令 描述
–connect 指定JDBC连接字符串
–connection-manager 指定要使用的连接管理器类
–driver 手动指定要使用的JDBC驱动程序类
–hadoop-mapred-home 覆盖$ HADOOP_MAPRED_HOME
–help 打印使用说明
–password-file 设置包含验证密码的文件的路径
-P 从控制台读取密码
–password 设置验证密码
–username 设置认证用户名
–verbose 工作时打印更多信息
–connection-param-file 提供连接参数的可选属性文件
–relaxed-isolation 将连接事务隔离设置为读取未提交的映射器。

示例

$ sqoop import \
--connect jdbc:mysql://database.example.com/employees \
--username root \
-P              # 控制台输入mysql密码
           

另外密码可以用400权限将密码保存在用户主目录的文件中

–password-file

,echo -n “secret” > password.file

$ sqoop import \
--connect jdbc:mysql://localhost:3306 \ 
--username root \
--password-file ${user.home} /.password
           
命令 描述
–append 将数据附加到HDFS中的现有数据集
–as-avrodatafile 将数据导入Avro数据文件
–as-sequencefile 将数据导入SequenceFiles
–as-textfile 以纯文本格式导入数据(默认)
–as-parquetfile 将数据导入Parquet文件
–boundary-query 用于创建拆分的边界查询
–columns <col,col,col…> 要从表导入的列
–delete-target-dir 删除导入目标目录(如果存在)
–direct 如果数据库存在,请使用直接连接器
–fetch-size 一次从数据库中读取的条目数。
–inline-lob-limit 设置内联LOB的最大大小
-m,–num-mappers 使用n个映射任务并行导入
-e,–query 导入结果statement。
–split-by 用于拆分工作单位的表格列。不能与–autoreset-to-one-mapper选项一起使用 。
–autoreset-to-one-mapper

如果表没有主键且没有提供拆分列,则导入应使用一个映射器。

不能与–split-by选项一起使用 。

–table 要阅读的表格
–target-dir HDFS目的地目录
–warehouse-dir 表格目的地的HDFS父级
–where 导入期间要使用的WHERE子句
-z,–compress 启用压缩
–compression-codec 使用Hadoop编解码器(默认gzip)
–null-string 要为字符串列的空值写入的字符串
–null-non-string 要为非字符串列写入空值的字符串

1.在–null-string和–null-non-string参数都是可选的。\如果未指定,那么字符串“null”将被使用

2.导入的数据默认是为自然顺序的,可以通过–columns来指定顺序 例如:–columns “name,gender,age”

3.sqoop可以导入任意SQL的查询集,但这种Free-form模式必须指定–target-dir

4.如果要并行导入查询结果,则每个映射任务都需要执行查询的副本,并通过Sqoop推断的边界条件对结果进行分区。查询必须包含$CONDITIONS 每个Sqoop进程将使用唯一条件表达式替换的标记,还必须选择拆分列–split-by

示例:

$ sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  --split-by a.id --target-dir /user/foo/joinresults
           

指定单个map任务,可以执行一次查询并串行导入,示例:

$ sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  -m 1 \
  --target-dir /user/foo/joinresults
           

1.如果查询条件语句使用双引号 那么在$CONDITIONS前面需要加上反斜杠,否则shell将会其视为shell变量

2.sqoop-1.4.6版本下的模糊查询仅限于简单查询,并且OR和WHERE没法使用模糊查询,使用复杂查询容易出错

Hive相关参数
命令 描述
–hive-home 覆盖 $HIVE_HOME
–hive-import 将表导入Hive(如果没有设置,则使用Hive的默认分隔符。)
–hive-overwrite 覆盖Hive表中的现有数据。
–create-hive-table 如果设置,则作业将失败,如果目标配置单元表退出。默认情况下,此属性为false。
–hive-table 设置导入Hive时要使用的表名。
–hive-drop-import-delims 导入到Hive时从字符串字段中 删除\ n,\ r和\ 01。
–hive-delims-replacement 导入到Hive时,使用用户定义的字符串 替换字符串字段中的\ n,\ r和\ 01。
–hive-partition-key 分区的配置单元字段的名称是分片的
–hive-partition-value 字符串值,用作此作业中导入到配置单元的分区键。
–map-column-hive 为已配置的列覆盖从SQL类型到Hive类型的默认映射。