常用命令整理
命令 | 描述 |
---|---|
–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类型的默认映射。 |