大数据:sqoop:命令和参数

命令分类(4大类)

  1. sqoop import                         单表导入

  2. sqoop import-all-tables        批量导入

  3. sqoop export                         导出

  4. sqoop job                               多任务创建

格式:sqoop 命令1 --参数1 参数1值 --参数2 参数2值 ······ --参数n 参数n值

(通用) 数据库连接参数:

  • --connect                         <(数据库连接地址)jdbc:mysql://IP:Port/数据库名?其他参数  >
  • --username                     <用户名 >
  • --password                     <密码 >
  • --query                            < sql查询语句 where条件中需要包含$CONDITIONS >
  • -–connection-manager         <连接管理类名>
  • -–driver <class-name>         <驱动类名>
  • -–connection-param-file       <数据库参数文件名>
  • -–table                                     <关系数据库表名>

1.sqoop import 相关参数        sqoop import  --参数1 参数1值  ···· --参数n 参数n值

打印相关参数

  • –-help                                     打印帮助信息
  • –-verbose                               在控制台打印出详细信息

执行参数

  • --m,–num-mappers               <map数量,默认是4个>
  • -–mapreduce-job-name           生成的mapreduce作业设置名称

模式参数

  • --delete-target-dir                 以删除模式导入数据(如果目标文件存在则删除再导入. 不指定时如果目标路径存在则报错)  模式
  • --direct                                   直接导出模式(数据库自带工具,快)

保存文件参数

  • -–target-dir                             <指定hdfs路径,import目标目录>
  • -–as-textfile                            <将数据保存为文本文件
  • -–as-avrodatafile                   <将数据保存为Avro数据文件
  • -–as-sequencefile                 <将数据保存为sequence文件
  • –-hadoop-home                    <Hadoop根目录>
  • -–warehouse-dir                    <数据存放地址,与–target-dir不能同时用,适用于hdfs,不适用于导入hive>

格式化参数

  • -–fields-terminated-by          <字段结束符 默认'\001'(不可见方块)>
  • -–lines-terminated-by           <行结束符 '\n\r' >
  • --null-string '\\N'                    null字符串处理   表级设置’serialization.null.format’参数
  • --null-non-string '\\N'            null字符串处理  和上面一起用  
  • -–enclosed-by                        <强制给字段值前后加上指定的字符>
  • -–optionally-enclosed-by        <只给带有双引号或单引号的字段值加上指定的符号 >
  • -–escaped-by                         <给双引号作转义处理(例如\\ 使其失效)>
  • -–split-by                              <字段名,用来切分工作单元,一般后面跟主键ID>
  • -–mysql-delimiters                 <Mysql默认的分隔符设置(可不写,mysql数据库使用)

限定参数

  • -–inline-lob-limit                   <对象数据类型的最大值限定>
  • -–direct-split-size                   <字节数分块大小 >

控制参数

  • -–columns                             <指定要导入的字段值 col1,col2,...coln>
  • --z,–compress                       压缩参数保存为文件是执行压缩
  • -–compression-codec           Hadoop压缩编码,默认是gzip

增量导入参数

  • -–append                               <追加数据导入已经存在数据表>
  • -–check-column                源列,以检查增量更改
  • -–incremental                    定义类型为“append”或“lastmodified”的增量导入
  • -–last-value                       增量检查列中最后导入的值

验证参数

  • –validate 使用配置的验证器验证副本
  • –validation-failurehandler ValidationFailureHandler的完全限定类名
  • –validation-threshold ValidationThreshold的完全限定类名
  • –validator Validator的完全限定类名
  • –warehouse-dir 要导入hdfs的父路径
  • –where 导入时使用WHERE条件过滤

Hive相关参数

  • -–create-hive-table       导入时自动创建Hive表.如果目标hive表存在,则失败
  • -–hive-database           <hive数据库名称>
  • -–hive-delims-replacement  <自定义的字符串替换导入字符串字段中的Hive record \0x01和行分隔符(\n\r)>
  • -–hive-drop-import-delims  从导入的字符串字段中删除Hive记录\0x01和行分隔符(\n\r)
  • -–hive-home                 <$HIVE_HOME参数>
  • -–hive-import               将表导入到Hive中
  • -–hive-overwrite             重写Hive表中的现有数据(覆盖导入)
  • -–hive-partition-key         <导入hive的分区键>
  • -–hive-partition-value         <分区值>
  • -–hive-table                 <hive表名>
  • -–map-column-hive             <指定列到hive类型的映射>

-HBase参数

  • -–column-family 设置导入的目标列族
  • -–hbase-bulkload 启用HBase批量加载
  • -–hbase-create-table 如果指定,创建缺少的HBase表
  • -–hbase-row-key 指定要使用哪个输入列作为行键
  • -–hbase-table 导入到HBase中的表名

2.sqoop import-all-tables 批量导入

  • -–as-parquetfile                       <保存为parquet文件 文件路径\文件名>
  • -–autoreset-to-one-mapper     如果没有拆分键可用,则将映射器的数量重置为一个映射器
  • -–exclude-tables                     <导入所有表时要排除的表>
  • -–fetch-size                             <从数据库中获取的行数>

3.sqoop export 导出          sqoop export --参数1 参数1值  ···· --参数n 参数n值

  • -–verbose     作业执行时打印更多信息
  • -–batch             指示以批处理模式执行的底层语句
  • -–call             使用这个存储过程填充表(每行一个调用)
  • -–clear-staging-table 清除中间临时表
  • -–columns         指定导出的列,列名之间用逗号隔开
  • -–staging-table     中间临时表
  • -–table             需要导出的表
  • -–update-key     按指定的键列更新记录

模式参数

  • -–update-mode     指定在数据库中发现具有不匹配键的新行时如何执行更新.该模式有两种updateonly(默认)和allowinsert。
    • updateonly:用于更新Hive表与目标表中数据不一致场景,即在不一致时,将Hive中的数据同步给目标表(如MySQL,Oracle等的目标表中),这种不一致是指,一条记录中的不一致,比如Hive表和MySQL中都有一个id=1的记录,但是其中一个字段的取值不同,则该模式会将这种差异抹除。对于“你有我无”的记录则“置之不理”。
    •  allowinsert:用于将Hive中有但目标表中无的记录同步到目标表中,但同时也会同步不一致的记录。这种模式可以包含updateonly模式的操作

 4.sqoop job 多任务创建               sqoop job --参数1 参数1值  ···· --参数n 参数n值

作业(Job)管理参数

  • -–create          <创建 job名>
  • -–delete        <删除 job名>保存的作业
  • -–exec            <运行 job名>保存的作业
  • -–list            查看Job列表
  • -–meta-connect <为元数据指定JDBC连接字符串>
  • -–show            <显示 指定job名>

sqoop job案例:sql导入带hive中

sqoop job --create job_rpd --import 
			--connect 'jdbc:sqlserver://IP:port;database=数据库名' \
			--username 用户名 
			--password 密码
			--table sql表名 
			--hive-import 
			--hive-drop-import-delims 
			--hive-database hive数据库
			--hive-table hive表
			--incremental append模式 
			--check-column 检查字段
			--merge-key 合并字段
			--last-value '检查字段值' 
			-m 1;

其他参数 

-HCatalog参数(Hive元数据导入参数)

  • -–hcatalog-database         <HCatalog数据库名称>
  • -–hcatalog-home             <$HCAT_HOME(即HIVE_HOME)>
  • -–hcatalog-partition-keys   设置导入到hive时要使用的分区键
  • -–hcatalog-partition-values 设置导入到hive时要使用的分区值
  • -–hcatalog-table HCatalog表名(即Hive表)
  • -–hive-home 覆盖 $HIVE_HOME
  • -–hive-partition-key 设置导入到hive时要使用的分区键
  • -–hive-partition-value 设置导入到hive时要使用的分区值
  • -–map-column-hive 覆盖指定列到hive类型的映射

-HCatalog导入特定选项

  • -–create-hcatalog-table 在导入之前创建HCatalog
  • -–drop-and-create-hcatalog-table 在导入之前删除并创建HCatalog
  • -–hcatalog-storage-stanza 用于创建表的HCatalog存储节

-Accumulo参数

  • -–accumulo-batch-size 批处理大小(以字节为单位)
  • -–accumulo-column-family 设置导入的目标列族
  • -–accumulo-create-table 如果指定,则创建缺少的累加Accumulo表
  • -–accumulo-instance Accumulo实例名
  • -–accumulo-max-latency 最大写延迟(以毫秒为单位)
  • -–accumulo-password Accumulo密码
  • -–accumulo-row-key 指定要使用哪个输入列作为行键
  • -–accumulo-table 导入到Accumulo中的表
  • -–accumulo-user Accumulo用户名
  • -–accumulo-visibility 要应用于导入的所有行的可见性令牌
  • -–accumulo-zookeepers 逗号分隔的zookeeper列表(主机:端口号)

-代码生成的参数

  • -–bindir 编译对象的输出目录
  • -–class-name 设置生成的类名,覆盖 --package-name. 当与–jar-file组合时,设置input类.
  • -–escape-mapping-column-names 禁用列名中转义的特殊字符
  • -–input-null-non-string 输入空非字符串表示
  • -–input-null-string 输入空字符串表示
  • -–jar-file 禁用代码生成;使用指定的jar
  • -–map-column-java 覆盖特定列到java类型的映射
  • -–null-non-string 空非字符串表示(数值型默认初始化值:0)
  • -–null-string 空字符串表示(即String默认初始化值:"")
  • -–outdir 生成代码的输出目录
  • -–package-name 将自动生成的类放在这个包中
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(Mysql、Postgresql...)间进行数据的传递,可以将一个关系 型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速 的迭代开发,Sqoop独立成为一个Apache项目。目前主要有Sqoop1 和 Sqoop2 两大版本。 Sqoop简介 大数据-sqoop全文共16页,当前为第1页。 Sqoop1 和 Sqoop2 结构图。左图是Sqoop1 架构,右图是Sqoop2 架构 Sqoop架构图 大数据-sqoop全文共16页,当前为第2页。 Sqoop版本区别 Sqoop1与Sqoop2优缺点比较。 优点比较: Sqoop1的优点——架构部署简单。 Sqoop2的优点——多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在Sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。 缺点比较: Sqoop1的缺点——命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏, 安装需要root权限,connector必须符合JDBC模型 。 Sqoop2的缺点——架构稍复杂,配置部署更繁琐。 大数据-sqoop全文共16页,当前为第3页。 Sqoop2和Sqoop1的功能性对比 Sqoop的版本区别 功能 Sqoop1 Sqoop2 用于所有主要 RDBMS 的连接器 支持 不支持解决办法: 使用已在以下数据库上执行测试的通用 JDBC 连接器: Microsoft SQL Server 、 PostgreSQL 、 MySQL 和 Oracle 。 此连接器应在任何其它符合 JDBC 要求的数据库上运行。但是,性能可能无法与 Sqoop 中的专用连接器相比 Kerberos 安全集成 支持 不支持 数据从 RDBMS 传输至 Hive 或 HBase 支持 不支持解决办法: 按照此两步方法操作。 将数据从 RDBMS 导入 HDFS 在 Hive 中使用相应的工具命令(例如 LOAD DATA 语句),手动将数据载入 Hive 或 Hbase 大数据-sqoop全文共16页,当前为第4页。 Sqoop版本区别 功能 Sqoop1 Sqoop2 数据从 Hive 或 HBase 传输至 RDBMS 不支持解决办法: 按照此两步方法操作。 从 Hive 或 HBase 将数据提取至 HDFS (作为文本或 Avro 文件) 使用 Sqoop 将上一步的输出导出至 RDBMS 不支持按照与 Sqoop 1 相同的解决方法操作 大数据-sqoop全文共16页,当前为第5页。 Sqoop的用途 Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出,其中主要使用了import和export这两个工具。 这两个工具非常强大,提供了很多选项帮助我们完成数据的迁移和同步。比如,下面两个潜在的需求: 1、业务数据存放在关系数据库中,如果数据量达到一定规模后需要对其进行分析或统计,单纯使用关系数据 库可能会成为瓶颈,这时可以将数据从业务数据库数据导入(import)到Hadoop平台进行离线分析。 2、对大规模的数据在Hadoop平台上进行分析以后,可能需要将结果同步到关系数据库中作为业务的辅助数据, 这时候需要将Hadoop平台分析后的数据导出(export)到关系数据库。 大数据-sqoop全文共16页,当前为第6页。 提纲 1 sqoop简介 2 sqoop安装 3 sqoop数据操作 大数据-sqoop全文共16页,当前为第7页。 环境软件准备: 1:Centos 6.8虚拟机 2:含有导入数据的Mysql数据库 3:Sqoop 安装包 下载地址: https://mirrors.cnnic.cn/apache/sqoop/ Sqoop安装 大数据-sqoop全文共16页,当前为第8页。 配置环境变量加入Sqoop的安装路径: 1、进入存放sqoop-1.4.7.tar.gz安装的目录执行下面的命令 sudo tar -zxvf /home/thinkgamer/下载/sqoop-1.4.7.tar.gz –C sudo mv sqoop-1.4.7/ sqoop 2、编辑/etc/profile文件,声明Sqoop的home路径和在path加入bin的路径: vi /etc/profile 在文件最底部添

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值