sqoop常用命令整理

本文整理了Sqoop的常用命令,包括如何保存密码、指定数据导入顺序、导入SQL查询集以及使用Hive相关参数。特别指出, Sqoop可以并行导入数据,但需要指定--split-by参数以根据拆分列进行分区。同时,对于1.4.6版本,复杂查询和模糊查询可能受限。

常用命令整理

命令描述
–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类型的默认映射。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值