sqoop学习总结

一:sqoop简介

  1. sqoop是一个高效传输海量数据而设计的工具,一般用于从关系型数据库同步数据到非关系型数据库中。
  2. 使用sqoop进行数据的导入,导出,其本质上是运行Mapreduce程序,充分利用了MR的并行化和容错性。
  3. sqoop支持增量更新,将新记录添加到最近一次的导出的数据源上。

二:sqoop使用

    获取MySQL数据库中数据库名称

sqoop list-database 
-connect 'jdbc:mysql://10.1.96.xx:3306' 
-username test 
-password test

  获取sqlserver数据库的某个数据库下的所有表的名称

sqoop list-tables 
connect'jdbc:sqlserver://192.168.12.xx:1433;database=pems;
username=sa;password=v3pems@2020'

 sqoop 将oracle数据库中的某个库中的所有表导入到hive中

sqoop import-all-tables 
-connect jdbc:oracle:thin:@10.89.142.207:1521:orcl 
-username scott -password tiger -hive-database eda 
-hive-import -create-hive-table -m 1

使用Sqoop执行sql语句

sqoop eval -connect 'jdbc:sqlserver://192.168.12.65:1433;database=PEMS_DATA;
username=sa;password=V3pems@2021' -query'select count(*) from rep_energy_tar'

三:sqoop常见操作命令

使用参数说明

1.数据导入:sqoop import

可通过 sqoop import --help 命令查看参数 说明

普通参数

  • –connect 指定JDBC连接字符串
  • –connection-manager 指定连接管理器类名
  • –connection-param-file 指定连接参数文件
  • –driver 手动指定要使用的JDBC驱动程序类
  • –hadoop-home 覆盖 $HADOOP_MAPR ED_HOME_ARG 参数
  • –hadoop-mapred-home 覆盖 $HADOOP_MAPR ED_HOME_ARG 参数
  • –help 打印使用说明
  • –metadata-transaction-isolation-level 为元数据查询定义事务隔离级别
  • –oracle-escaping-disabled 禁用Oracle/OraOop连接管理器的转义机制
  • -P 从控制台读取密码
  • –password 设置密码验证
  • –password-alias 凭据提供程序密码别名
  • –password-file 在密码文件路径上设置验证
  • –relaxed-isolation 对导入使用read-uncommi隔离
  • –skip-dist-cache 跳过将jar复制到分布式缓存
  • –temporary-rootdir 定义导入的临时根目录
  • –throw-on-error 在作业期间发生错误时,重新抛出RuntimeException
  • –username 设置身份验证的用户名
  • –verbose 工作时打印更多信息

导入的控制参数

  • –append 以追加模式导入数据
  • –as-avrodatafile 将导入数据以avro文件存储
  • –as-parquetfile 将导入数据以parquet文件存储
  • –as-sequencefile 将导入数据以SequenceFile文件存储
  • –as-textfile 以纯文本形式导入数据(默认)
  • –autoreset-to-one-mapper 如果没有拆分键可用,则将映射器的数量重置为一个映射器
  • –boundary-query 设置边界查询,检索主键的最大值和最小值
  • –columns <col,col,col…> 指定需要导入的列
  • –compression-codec 用于导入的压缩编解码器
  • –delete-target-dir 以删除模式导入数据(如果目标文件存在则删除再导入. 不指定时如果目标路径存在则报错)
  • –direct 使用直接导入快速路径
  • –direct-split-size 在直接模式导入时,将输入流按“n”字节分割
  • -e,–query 导入SQL“语句”的结果
  • –fetch-size 当需要更多行时,设置从数据库中获取的行数’n’,设置内联LOB的最大大小
  • -m,–num-mappers 使用n个map任务并行导入.默认并行度为4
  • –mapreduce-job-name 为生成的mapreduce作业设置名称
  • –merge-key 要用于合并结果的Key列(用于增量导入时重复数据的合并)
  • –split-by 用于分割工作单元的表的列
  • –split-limit 日期/时间/时间戳和整数类型的拆分列每次拆分的行上限。对于日期或时间戳字段,以秒为单位计算。拆分极限应该大于0
  • –table 读取的表名(要导入的表)
  • –target-dir 导入的表存放于HDFS中的目标路径
  • –validate 使用配置的验证器验证副本
  • –validation-failurehandler ValidationFailureHandler的完全限定类名
  • –validation-threshold ValidationThreshold的完全限定类名
  • –validator Validator的完全限定类名
  • –warehouse-dir 要导入hdfs的父路径
  • –where 导入时使用WHERE条件过滤
  • -z,–compress 启用压缩

增量导入参数

  • –check-column 源列,以检查增量更改
  • –incremental 定义类型为“append”或“lastmodified”的增量导入
  • –last-value 增量检查列中最后导入的值

输出行格式化参数

扫描二维码关注公众号,回复: 12788452 查看本文章
  • –enclosed-by 设置所需字段的封闭字符
  • –escaped-by 设置转义字符
  • –fields-terminated-by 设置字段分隔符
  • –lines-terminated-by 设置行尾字符
  • –mysql-delimiters 使用MySQL默认的分隔符集: 字段:, ;行:\n ;转义字符:\ ;字段包围符:’
  • –optionally-enclosed-by 设置包含字符的字段

输入解析参数

  • –input-enclosed-by 设置所需的字段罩
  • –input-escaped-by 设置输入转义字符
  • –input-fields-terminated-by 设置输入字段分隔符
  • –input-lines-terminated-by 设置输入行结束字符
  • –input-optionally-enclosed-by 设置包含字符的字段

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的默认分隔符)
  • –hive-overwrite 重写Hive表中的现有数据(覆盖导入)
  • –hive-partition-key 设置导入到hive时要使用的分区键
  • –hive-partition-value 设置导入到hive时要使用的分区值
  • –hive-table 设置导入到hive时要使用的表名
  • –map-column-hive 覆盖指定列到hive类型的映射

HBase参数

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

参考文献:

https://zhuanlan.zhihu.com/p/163266351

猜你喜欢

转载自blog.csdn.net/yezonghui/article/details/114869257
今日推荐