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

160

被折叠的 条评论
为什么被折叠?



